def test_difference_update(self): rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"]]) rn2 = RangeSetND([["10", "10"]]) rn1.difference_update(rn2) self.assertEqual(len(rn1), 4) self.assertEqual(str(rn1), "10; 9,11-13\n") rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"], ["8-9", "12-15"]]) rn2 = RangeSetND([["10", "10"], ["9", "12-15"]]) rn1.difference_update(rn2) self.assertEqual(len(rn1), 8) self.assertEqual(str(rn1), "8; 12-15\n10; 9,11-13\n") rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"], ["8-9", "12-15"]]) rn2 = RangeSetND([["10", "10"], ["9", "12-15"], ["10-12", "11-15"], ["11", "14"]]) rn1.difference_update(rn2) self.assertEqual(len(rn1), 5) self.assertEqual(str(rn1), "8; 12-15\n10; 9\n") rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"], ["8-9", "12-15"], ["10", "10-13"], ["10", "12-16"], ["9", "13-16"]]) rn2 = RangeSetND([["10", "10"], ["9", "12-15"], ["10-12", "11-15"], ["11", "14"]]) rn1.difference_update(rn2) self.assertEqual(len(rn1), 7) # no pre-fold (self._veclist) self.assertEqual(str(rn1), "8; 12-15\n9-10; 16\n10; 9\n") # pre-fold (self.veclist) #self.assertEqual(str(rn1), "8; 12-15\n10; 9,16\n9; 16\n") # strict mode rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"], ["8-9", "12-15"]]) rn2 = RangeSetND([["10", "10"], ["9", "12-15"], ["10-12", "11-15"], ["11", "14"]]) self.assertRaises(KeyError, rn1.difference_update, rn2, strict=True) if sys.version_info >= (2, 5, 0): rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"]]) rn2 = RangeSetND([["10", "10"]]) rn1 -= rn2 self.assertEqual(str(rn1), "10; 9,11-13\n") self.assertEqual(len(rn1), 4) # binary error rn2 = set([3, 5]) self.assertRaises(TypeError, rn1.__isub__, rn2)