bugfix for unhashable/uncomparable dicts

This commit is contained in:
Przemyslaw Gajda 2012-04-23 23:22:26 +02:00
parent 5575789612
commit 7960a29252
1 changed files with 8 additions and 8 deletions

16
mox.py
View File

@ -1640,17 +1640,17 @@ class SameElementsAs(Comparator):
# This happens because Mox uses __eq__ both to check object equality (in
# MethodSignatureChecker) and to invoke Comparators.
return False
try:
expected = dict([(element, None) for element in self._expected_list])
actual = dict([(element, None) for element in actual_list])
return set(self._expected_list) == set(actual_list)
except TypeError:
# Fall back to slower list-compare if any of the objects are unhashable.
expected = self._expected_list
actual = actual_list
expected.sort()
actual.sort()
return expected == actual
if len(self._expected_list) != len(actual_list):
return False
for el in actual_list:
if el not in self._expected_list:
return False
return True
def __repr__(self):
return '<sequence with same elements as \'%s\'>' % self._expected_list