mirror of
https://github.com/python/cpython.git
synced 2025-08-30 13:38:43 +00:00
Issue 10242: unittest.assertItemsEqual makes too many assumptions.
This commit is contained in:
parent
db213a297d
commit
6e165b30de
5 changed files with 60 additions and 39 deletions
|
@ -672,46 +672,53 @@ class Test_TestCase(unittest.TestCase, TestEquality, TestHashing):
|
|||
else:
|
||||
self.fail('assertMultiLineEqual did not fail')
|
||||
|
||||
def testAssertItemsEqual(self):
|
||||
def testassertCountEqual(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,
|
||||
self.assertCountEqual([1, 2, 3], [3, 2, 1])
|
||||
self.assertCountEqual(['foo', 'bar', 'baz'], ['bar', 'baz', 'foo'])
|
||||
self.assertCountEqual([a, a, 2, 2, 3], (a, 2, 3, a, 2))
|
||||
self.assertCountEqual([1, "2", "a", "a"], ["a", "2", True, "a"])
|
||||
self.assertRaises(self.failureException, self.assertCountEqual,
|
||||
[1, 2] + [3] * 100, [1] * 100 + [2, 3])
|
||||
self.assertRaises(self.failureException, self.assertItemsEqual,
|
||||
self.assertRaises(self.failureException, self.assertCountEqual,
|
||||
[1, "2", "a", "a"], ["a", "2", True, 1])
|
||||
self.assertRaises(self.failureException, self.assertItemsEqual,
|
||||
self.assertRaises(self.failureException, self.assertCountEqual,
|
||||
[10], [10, 11])
|
||||
self.assertRaises(self.failureException, self.assertItemsEqual,
|
||||
self.assertRaises(self.failureException, self.assertCountEqual,
|
||||
[10, 11], [10])
|
||||
self.assertRaises(self.failureException, self.assertItemsEqual,
|
||||
self.assertRaises(self.failureException, self.assertCountEqual,
|
||||
[10, 11, 10], [10, 11])
|
||||
|
||||
# Test that sequences of unhashable objects can be tested for sameness:
|
||||
self.assertItemsEqual([[1, 2], [3, 4], 0], [False, [3, 4], [1, 2]])
|
||||
self.assertCountEqual([[1, 2], [3, 4], 0], [False, [3, 4], [1, 2]])
|
||||
|
||||
# hashable types, but not orderable
|
||||
self.assertRaises(self.failureException, self.assertItemsEqual,
|
||||
self.assertRaises(self.failureException, self.assertCountEqual,
|
||||
[], [divmod, 'x', 1, 5j, 2j, frozenset()])
|
||||
# comparing dicts
|
||||
self.assertItemsEqual([{'a': 1}, {'b': 2}], [{'b': 2}, {'a': 1}])
|
||||
self.assertCountEqual([{'a': 1}, {'b': 2}], [{'b': 2}, {'a': 1}])
|
||||
# comparing heterogenous non-hashable sequences
|
||||
self.assertItemsEqual([1, 'x', divmod, []], [divmod, [], 'x', 1])
|
||||
self.assertRaises(self.failureException, self.assertItemsEqual,
|
||||
self.assertCountEqual([1, 'x', divmod, []], [divmod, [], 'x', 1])
|
||||
self.assertRaises(self.failureException, self.assertCountEqual,
|
||||
[], [divmod, [], 'x', 1, 5j, 2j, set()])
|
||||
self.assertRaises(self.failureException, self.assertItemsEqual,
|
||||
self.assertRaises(self.failureException, self.assertCountEqual,
|
||||
[[1]], [[2]])
|
||||
|
||||
# Same elements, but not same sequence length
|
||||
self.assertRaises(self.failureException, self.assertItemsEqual,
|
||||
self.assertRaises(self.failureException, self.assertCountEqual,
|
||||
[1, 1, 2], [2, 1])
|
||||
self.assertRaises(self.failureException, self.assertItemsEqual,
|
||||
self.assertRaises(self.failureException, self.assertCountEqual,
|
||||
[1, 1, "2", "a", "a"], ["2", "2", True, "a"])
|
||||
self.assertRaises(self.failureException, self.assertItemsEqual,
|
||||
self.assertRaises(self.failureException, self.assertCountEqual,
|
||||
[1, {'b': 2}, None, True], [{'b': 2}, True, None])
|
||||
|
||||
# Same elements which don't reliably compare, in
|
||||
# different order, see issue 10242
|
||||
a = [{2,4}, {1,2}]
|
||||
b = a[::-1]
|
||||
self.assertCountEqual(a, b)
|
||||
|
||||
|
||||
def testAssertSetEqual(self):
|
||||
set1 = set()
|
||||
set2 = set()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue