diff options
author | Michael Foord <fuzzyman@voidspace.org.uk> | 2010-03-20 03:00:34 (GMT) |
---|---|---|
committer | Michael Foord <fuzzyman@voidspace.org.uk> | 2010-03-20 03:00:34 (GMT) |
commit | 98e7b7644bfa3ecc7919b1a139da299da081f34e (patch) | |
tree | 97e7397de6a4d75f8daf3db2ee3d4dfead5c8902 /Lib/test/test_unittest.py | |
parent | 2e6d2622bd793c0eda9e838bb12d98b02ab0db18 (diff) | |
download | cpython-98e7b7644bfa3ecc7919b1a139da299da081f34e.zip cpython-98e7b7644bfa3ecc7919b1a139da299da081f34e.tar.gz cpython-98e7b7644bfa3ecc7919b1a139da299da081f34e.tar.bz2 |
Issue 7832: renaming unittest.TestCase.assertSameElements to assertItemsEqual and changing behaviour
Diffstat (limited to 'Lib/test/test_unittest.py')
-rw-r--r-- | Lib/test/test_unittest.py | 71 |
1 files changed, 51 insertions, 20 deletions
diff --git a/Lib/test/test_unittest.py b/Lib/test/test_unittest.py index 1b48628..5228e76 100644 --- a/Lib/test/test_unittest.py +++ b/Lib/test/test_unittest.py @@ -2575,9 +2575,9 @@ class Test_TestCase(TestCase, TestEquality, TestHashing): class SadSnake(object): """Dummy class for test_addTypeEqualityFunc.""" s1, s2 = SadSnake(), SadSnake() - self.assertFalse(s1 == s2) + self.assertNotEqual(s1, s2) def AllSnakesCreatedEqual(a, b, msg=None): - return type(a) == type(b) == SadSnake + return type(a) is type(b) is SadSnake self.addTypeEqualityFunc(SadSnake, AllSnakesCreatedEqual) self.assertEqual(s1, s2) # No this doesn't clean up and remove the SadSnake equality func @@ -2745,21 +2745,51 @@ class Test_TestCase(TestCase, TestEquality, TestHashing): self.assertRaises(self.failureException, self.assertDictEqual, [], d) self.assertRaises(self.failureException, self.assertDictEqual, 1, 1) - self.assertSameElements([1, 2, 3], [3, 2, 1]) - self.assertSameElements([1, 2] + [3] * 100, [1] * 100 + [2, 3]) - self.assertSameElements(['foo', 'bar', 'baz'], ['bar', 'baz', 'foo']) - self.assertRaises(self.failureException, self.assertSameElements, + def testAssertItemsEqual(self): + a = object() + self.assertItemsEqual([1, 2, 3], [3, 2, 1]) + self.assertItemsEqual(['foo', 'bar', 'baz'], ['bar', 'baz', 'foo']) + self.assertItemsEqual([a, a, 2, 2, 3], (a, 2, 3, a, 2)) + self.assertItemsEqual([1, "2", "a", "a"], ["a", "2", True, "a"]) + self.assertRaises(self.failureException, self.assertItemsEqual, + [1, 2] + [3] * 100, [1] * 100 + [2, 3]) + self.assertRaises(self.failureException, self.assertItemsEqual, + [1, "2", "a", "a"], ["a", "2", True, 1]) + self.assertRaises(self.failureException, self.assertItemsEqual, [10], [10, 11]) - self.assertRaises(self.failureException, self.assertSameElements, + self.assertRaises(self.failureException, self.assertItemsEqual, [10, 11], [10]) + self.assertRaises(self.failureException, self.assertItemsEqual, + [10, 11, 10], [10, 11]) # Test that sequences of unhashable objects can be tested for sameness: - self.assertSameElements([[1, 2], [3, 4]], [[3, 4], [1, 2]]) - - self.assertSameElements([{'a': 1}, {'b': 2}], [{'b': 2}, {'a': 1}]) - self.assertRaises(self.failureException, self.assertSameElements, + self.assertItemsEqual([[1, 2], [3, 4], 0], [False, [3, 4], [1, 2]]) + with test_support.check_warnings(quiet=True) as w: + # hashable types, but not orderable + self.assertRaises(self.failureException, self.assertItemsEqual, + [], [divmod, 'x', 1, 5j, 2j, frozenset()]) + # comparing dicts raises a py3k warning + self.assertItemsEqual([{'a': 1}, {'b': 2}], [{'b': 2}, {'a': 1}]) + # comparing heterogenous non-hashable sequences raises a py3k warning + self.assertItemsEqual([1, 'x', divmod, []], [divmod, [], 'x', 1]) + self.assertRaises(self.failureException, self.assertItemsEqual, + [], [divmod, [], 'x', 1, 5j, 2j, set()]) + # fail the test if warnings are not silenced + if w.warnings: + self.fail('assertItemsEqual raised a warning: ' + + str(w.warnings[0])) + self.assertRaises(self.failureException, self.assertItemsEqual, [[1]], [[2]]) + # Same elements, but not same sequence length + self.assertRaises(self.failureException, self.assertItemsEqual, + [1, 1, 2], [2, 1]) + self.assertRaises(self.failureException, self.assertItemsEqual, + [1, 1, "2", "a", "a"], ["2", "2", True, "a"]) + self.assertRaises(self.failureException, self.assertItemsEqual, + [1, {'b': 2}, None, True], [{'b': 2}, True, None]) + + def testAssertSetEqual(self): set1 = set() set2 = set() @@ -3009,13 +3039,14 @@ test case Do not use these methods. They will go away in 3.3. """ - self.failIfEqual(3, 5) - self.failUnlessEqual(3, 3) - self.failUnlessAlmostEqual(2.0, 2.0) - self.failIfAlmostEqual(3.0, 5.0) - self.failUnless(True) - self.failUnlessRaises(TypeError, lambda _: 3.14 + u'spam') - self.failIf(False) + with test_support.check_warnings(): + self.failIfEqual(3, 5) + self.failUnlessEqual(3, 3) + self.failUnlessAlmostEqual(2.0, 2.0) + self.failIfAlmostEqual(3.0, 5.0) + self.failUnless(True) + self.failUnlessRaises(TypeError, lambda _: 3.14 + u'spam') + self.failIf(False) def testDeepcopy(self): # Issue: 5660 @@ -3355,8 +3386,8 @@ class TestLongMessage(TestCase): "^Missing: 'key'$", "^Missing: 'key' : oops$"]) - def testAssertSameElements(self): - self.assertMessages('assertSameElements', ([], [None]), + def testAssertItemsEqual(self): + self.assertMessages('assertItemsEqual', ([], [None]), [r"\[None\]$", "^oops$", r"\[None\]$", r"\[None\] : oops$"]) |