Changeset 391 for python/trunk/Lib/test/test_set.py
- Timestamp:
- Mar 19, 2014, 11:31:01 PM (11 years ago)
- Location:
- python/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
python/trunk
-
Property svn:mergeinfo
set to
/python/vendor/Python-2.7.6 merged eligible /python/vendor/current merged eligible
-
Property svn:mergeinfo
set to
-
python/trunk/Lib/test/test_set.py
r2 r391 1 1 2 import unittest 2 3 from test import test_support … … 6 7 import copy 7 8 import pickle 8 import os9 9 from random import randrange, shuffle 10 10 import sys … … 49 49 def test_new_or_init(self): 50 50 self.assertRaises(TypeError, self.thetype, [], 2) 51 self.assertRaises(TypeError, set().__init__, a=1) 51 52 52 53 def test_uniquification(self): … … 65 66 self.assertRaises(TypeError, self.s.__contains__, [[]]) 66 67 s = self.thetype([frozenset(self.letters)]) 67 self.assert _(self.thetype(self.letters) ins)68 self.assertIn(self.thetype(self.letters), s) 68 69 69 70 def test_union(self): … … 129 130 expected = f(s1, s2) 130 131 self.assertEqual(actual, expected) 131 self.assert _(actual is True or actual is False)132 self.assertTrue(actual is True or actual is False) 132 133 133 134 def test_and(self): … … 212 213 def test_sub_and_super(self): 213 214 p, q, r = map(self.thetype, ['ab', 'abcde', 'def']) 214 self.assert _(p < q)215 self.assert _(p <= q)216 self.assert _(q <= q)217 self.assert _(q > p)218 self.assert _(q >= p)219 self. failIf(q < r)220 self. failIf(q <= r)221 self. failIf(q > r)222 self. failIf(q >= r)223 self.assert _(set('a').issubset('abc'))224 self.assert _(set('abc').issuperset('a'))225 self. failIf(set('a').issubset('cbs'))226 self. failIf(set('cbs').issuperset('a'))215 self.assertTrue(p < q) 216 self.assertTrue(p <= q) 217 self.assertTrue(q <= q) 218 self.assertTrue(q > p) 219 self.assertTrue(q >= p) 220 self.assertFalse(q < r) 221 self.assertFalse(q <= r) 222 self.assertFalse(q > r) 223 self.assertFalse(q >= r) 224 self.assertTrue(set('a').issubset('abc')) 225 self.assertTrue(set('abc').issuperset('a')) 226 self.assertFalse(set('a').issubset('cbs')) 227 self.assertFalse(set('cbs').issuperset('a')) 227 228 228 229 def test_pickling(self): … … 272 273 f=set() 273 274 f.add(s) 274 self.assert _(s inf)275 self.assertIn(s, f) 275 276 f.remove(s) 276 277 f.add(s) … … 338 339 del obj, container 339 340 gc.collect() 340 self.assert _(ref() is None, "Cycle was not collected")341 self.assertTrue(ref() is None, "Cycle was not collected") 341 342 342 343 class TestSet(TestJointOps): … … 372 373 def test_add(self): 373 374 self.s.add('Q') 374 self.assert _('Q' inself.s)375 self.assertIn('Q', self.s) 375 376 dup = self.s.copy() 376 377 self.s.add('Q') … … 380 381 def test_remove(self): 381 382 self.s.remove('a') 382 self.assert _('a' not inself.s)383 self.assertNotIn('a', self.s) 383 384 self.assertRaises(KeyError, self.s.remove, 'Q') 384 385 self.assertRaises(TypeError, self.s.remove, []) 385 386 s = self.thetype([frozenset(self.word)]) 386 self.assert _(self.thetype(self.word) ins)387 self.assertIn(self.thetype(self.word), s) 387 388 s.remove(self.thetype(self.word)) 388 self.assert _(self.thetype(self.word) not ins)389 self.assertNotIn(self.thetype(self.word), s) 389 390 self.assertRaises(KeyError, self.s.remove, self.thetype(self.word)) 390 391 … … 405 406 self.s.remove(key) 406 407 except KeyError as e: 407 self.assert _(e.args[0] is key,408 self.assertTrue(e.args[0] is key, 408 409 "KeyError should be {0}, not {1}".format(key, 409 410 e.args[0])) … … 413 414 def test_discard(self): 414 415 self.s.discard('a') 415 self.assert _('a' not inself.s)416 self.assertNotIn('a', self.s) 416 417 self.s.discard('Q') 417 418 self.assertRaises(TypeError, self.s.discard, []) 418 419 s = self.thetype([frozenset(self.word)]) 419 self.assert _(self.thetype(self.word) ins)420 self.assertIn(self.thetype(self.word), s) 420 421 s.discard(self.thetype(self.word)) 421 self.assert _(self.thetype(self.word) not ins)422 self.assertNotIn(self.thetype(self.word), s) 422 423 s.discard(self.thetype(self.word)) 423 424 … … 425 426 for i in xrange(len(self.s)): 426 427 elem = self.s.pop() 427 self.assert _(elem not inself.s)428 self.assertNotIn(elem, self.s) 428 429 self.assertRaises(KeyError, self.s.pop) 429 430 … … 432 433 self.assertEqual(retval, None) 433 434 for c in (self.word + self.otherword): 434 self.assert _(c inself.s)435 self.assertIn(c, self.s) 435 436 self.assertRaises(PassThru, self.s.update, check_pass_thru()) 436 437 self.assertRaises(TypeError, self.s.update, [[]]) … … 450 451 self.s |= set(self.otherword) 451 452 for c in (self.word + self.otherword): 452 self.assert _(c inself.s)453 self.assertIn(c, self.s) 453 454 454 455 def test_intersection_update(self): … … 457 458 for c in (self.word + self.otherword): 458 459 if c in self.otherword and c in self.word: 459 self.assert _(c inself.s)460 self.assertIn(c, self.s) 460 461 else: 461 self.assert _(c not inself.s)462 self.assertNotIn(c, self.s) 462 463 self.assertRaises(PassThru, self.s.intersection_update, check_pass_thru()) 463 464 self.assertRaises(TypeError, self.s.intersection_update, [[]]) … … 477 478 for c in (self.word + self.otherword): 478 479 if c in self.otherword and c in self.word: 479 self.assert _(c inself.s)480 self.assertIn(c, self.s) 480 481 else: 481 self.assert _(c not inself.s)482 self.assertNotIn(c, self.s) 482 483 483 484 def test_difference_update(self): … … 486 487 for c in (self.word + self.otherword): 487 488 if c in self.word and c not in self.otherword: 488 self.assert _(c inself.s)489 self.assertIn(c, self.s) 489 490 else: 490 self.assert _(c not inself.s)491 self.assertNotIn(c, self.s) 491 492 self.assertRaises(PassThru, self.s.difference_update, check_pass_thru()) 492 493 self.assertRaises(TypeError, self.s.difference_update, [[]]) … … 514 515 for c in (self.word + self.otherword): 515 516 if c in self.word and c not in self.otherword: 516 self.assert _(c inself.s)517 self.assertIn(c, self.s) 517 518 else: 518 self.assert _(c not inself.s)519 self.assertNotIn(c, self.s) 519 520 520 521 def test_symmetric_difference_update(self): … … 523 524 for c in (self.word + self.otherword): 524 525 if (c in self.word) ^ (c in self.otherword): 525 self.assert _(c inself.s)526 self.assertIn(c, self.s) 526 527 else: 527 self.assert _(c not inself.s)528 self.assertNotIn(c, self.s) 528 529 self.assertRaises(PassThru, self.s.symmetric_difference_update, check_pass_thru()) 529 530 self.assertRaises(TypeError, self.s.symmetric_difference_update, [[]]) … … 538 539 for c in (self.word + self.otherword): 539 540 if (c in self.word) ^ (c in self.otherword): 540 self.assert _(c inself.s)541 self.assertIn(c, self.s) 541 542 else: 542 self.assert _(c not inself.s)543 self.assertNotIn(c, self.s) 543 544 544 545 def test_inplace_on_self(self): … … 564 565 if hasattr(set, "test_c_api"): 565 566 def test_c_api(self): 566 self.assertEqual(set( 'abc').test_c_api(), True)567 self.assertEqual(set().test_c_api(), True) 567 568 568 569 class SetSubclass(set): … … 687 688 self.assertEqual(repr(self.set), self.repr) 688 689 690 def check_repr_against_values(self): 691 text = repr(self.set) 692 self.assertTrue(text.startswith('{')) 693 self.assertTrue(text.endswith('}')) 694 695 result = text[1:-1].split(', ') 696 result.sort() 697 sorted_repr_values = [repr(value) for value in self.values] 698 sorted_repr_values.sort() 699 self.assertEqual(result, sorted_repr_values) 700 689 701 def test_print(self): 690 702 fo = open(test_support.TESTFN, "wb") … … 750 762 self.assertEqual(result, empty_set) 751 763 752 def checkempty_symmetric_difference(self):764 def test_empty_symmetric_difference(self): 753 765 result = self.set ^ empty_set 754 766 self.assertEqual(result, self.set) … … 768 780 def test_iteration(self): 769 781 for v in self.set: 770 self.assert _(v inself.values)782 self.assertIn(v, self.values) 771 783 setiter = iter(self.set) 772 784 # note: __length_hint__ is an internal undocumented API, … … 803 815 804 816 def test_in(self): 805 self. failUnless(3 inself.set)817 self.assertIn(3, self.set) 806 818 807 819 def test_not_in(self): 808 self. failUnless(2 not inself.set)820 self.assertNotIn(2, self.set) 809 821 810 822 #------------------------------------------------------------------------------ … … 820 832 821 833 def test_in(self): 822 self. failUnless((0, "zero") inself.set)834 self.assertIn((0, "zero"), self.set) 823 835 824 836 def test_not_in(self): 825 self. failUnless(9 not inself.set)837 self.assertNotIn(9, self.set) 826 838 827 839 #------------------------------------------------------------------------------ … … 835 847 self.length = 3 836 848 self.repr = None 849 850 #------------------------------------------------------------------------------ 851 852 class TestBasicOpsString(TestBasicOps): 853 def setUp(self): 854 self.case = "string set" 855 self.values = ["a", "b", "c"] 856 self.set = set(self.values) 857 self.dup = set(self.values) 858 self.length = 3 859 860 def test_repr(self): 861 self.check_repr_against_values() 862 863 #------------------------------------------------------------------------------ 864 865 class TestBasicOpsUnicode(TestBasicOps): 866 def setUp(self): 867 self.case = "unicode set" 868 self.values = [u"a", u"b", u"c"] 869 self.set = set(self.values) 870 self.dup = set(self.values) 871 self.length = 3 872 873 def test_repr(self): 874 self.check_repr_against_values() 875 876 #------------------------------------------------------------------------------ 877 878 class TestBasicOpsMixedStringUnicode(TestBasicOps): 879 def setUp(self): 880 self.case = "string and bytes set" 881 self.values = ["a", "b", u"a", u"b"] 882 self.set = set(self.values) 883 self.dup = set(self.values) 884 self.length = 4 885 886 def test_repr(self): 887 with test_support.check_warnings(): 888 self.check_repr_against_values() 837 889 838 890 #============================================================================== … … 1115 1167 self.assertEqual(len(popped), len(self.values)) 1116 1168 for v in self.values: 1117 self. failUnless(v inpopped)1169 self.assertIn(v, popped) 1118 1170 1119 1171 def test_update_empty_tuple(self): … … 1347 1399 self.otherIsIterable = False 1348 1400 1401 def test_ge_gt_le_lt(self): 1402 with test_support.check_py3k_warnings(): 1403 super(TestOnlySetsOperator, self).test_ge_gt_le_lt() 1404 1349 1405 #------------------------------------------------------------------------------ 1350 1406 … … 1379 1435 1380 1436 def test_copy(self): 1381 dup = self.set.copy() 1382 dup_list = list(dup); dup_list.sort() 1383 set_list = list(self.set); set_list.sort() 1384 self.assertEqual(len(dup_list), len(set_list)) 1385 for i in range(len(dup_list)): 1386 self.failUnless(dup_list[i] is set_list[i]) 1437 dup = list(self.set.copy()) 1438 self.assertEqual(len(dup), len(self.set)) 1439 for el in self.set: 1440 self.assertIn(el, dup) 1441 pos = dup.index(el) 1442 self.assertIs(el, dup.pop(pos)) 1443 self.assertFalse(dup) 1387 1444 1388 1445 def test_deep_copy(self): 1389 1446 dup = copy.deepcopy(self.set) 1390 ##print type(dup), repr(dup) 1391 dup_list = list(dup); dup_list.sort() 1392 set_list = list(self.set); set_list.sort() 1393 self.assertEqual(len(dup_list), len(set_list)) 1394 for i in range(len(dup_list)): 1395 self.assertEqual(dup_list[i], set_list[i]) 1447 self.assertSetEqual(dup, self.set) 1396 1448 1397 1449 #------------------------------------------------------------------------------ … … 1434 1486 def test_binopsVsSubsets(self): 1435 1487 a, b = self.a, self.b 1436 self.assert _(a - b < a)1437 self.assert _(b - a < b)1438 self.assert _(a & b < a)1439 self.assert _(a & b < b)1440 self.assert _(a | b > a)1441 self.assert _(a | b > b)1442 self.assert _(a ^ b < a | b)1488 self.assertTrue(a - b < a) 1489 self.assertTrue(b - a < b) 1490 self.assertTrue(a & b < a) 1491 self.assertTrue(a & b < b) 1492 self.assertTrue(a | b > a) 1493 self.assertTrue(a | b > b) 1494 self.assertTrue(a ^ b < a | b) 1443 1495 1444 1496 def test_commutativity(self): … … 1553 1605 for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)): 1554 1606 for g in (G, I, Ig, S, L, R): 1555 self.assert Equal(sorted(cons(g(s))), sorted(g(s)))1607 self.assertSetEqual(cons(g(s)), set(g(s))) 1556 1608 self.assertRaises(TypeError, cons , X(s)) 1557 1609 self.assertRaises(TypeError, cons , N(s)) … … 1568 1620 self.assertEqual(actual, expected) 1569 1621 else: 1570 self.assert Equal(sorted(actual), sorted(expected))1622 self.assertSetEqual(actual, expected) 1571 1623 self.assertRaises(TypeError, meth, X(s)) 1572 1624 self.assertRaises(TypeError, meth, N(s)) … … 1582 1634 getattr(s, methname)(list(g(data))) 1583 1635 getattr(t, methname)(g(data)) 1584 self.assert Equal(sorted(s), sorted(t))1636 self.assertSetEqual(s, t) 1585 1637 1586 1638 self.assertRaises(TypeError, getattr(set('january'), methname), X(data)) 1587 1639 self.assertRaises(TypeError, getattr(set('january'), methname), N(data)) 1588 1640 self.assertRaises(ZeroDivisionError, getattr(set('january'), methname), E(data)) 1641 1642 class bad_eq: 1643 def __eq__(self, other): 1644 if be_bad: 1645 set2.clear() 1646 raise ZeroDivisionError 1647 return self is other 1648 def __hash__(self): 1649 return 0 1650 1651 class bad_dict_clear: 1652 def __eq__(self, other): 1653 if be_bad: 1654 dict2.clear() 1655 return self is other 1656 def __hash__(self): 1657 return 0 1658 1659 class TestWeirdBugs(unittest.TestCase): 1660 def test_8420_set_merge(self): 1661 # This used to segfault 1662 global be_bad, set2, dict2 1663 be_bad = False 1664 set1 = {bad_eq()} 1665 set2 = {bad_eq() for i in range(75)} 1666 be_bad = True 1667 self.assertRaises(ZeroDivisionError, set1.update, set2) 1668 1669 be_bad = False 1670 set1 = {bad_dict_clear()} 1671 dict2 = {bad_dict_clear(): None} 1672 be_bad = True 1673 set1.symmetric_difference_update(dict2) 1589 1674 1590 1675 # Application tests (based on David Eppstein's graph recipes ==================================== … … 1689 1774 self.assertEqual(len(edge), 2) # Two cube vertices define an edge 1690 1775 for cubevert in edge: 1691 self.assert _(cubevert ing)1776 self.assertIn(cubevert, g) 1692 1777 1693 1778 … … 1695 1780 1696 1781 def test_main(verbose=None): 1697 from test import test_sets1698 1782 test_classes = ( 1699 1783 TestSet, … … 1730 1814 TestVariousIteratorArgs, 1731 1815 TestGraphs, 1816 TestWeirdBugs, 1732 1817 ) 1733 1818
Note:
See TracChangeset
for help on using the changeset viewer.