mirror of
https://github.com/RustPython/RustPython.git
synced 2026-06-17 01:51:39 +09:00
Implement dict.__eq__
This commit is contained in:
@@ -1,21 +1,23 @@
|
||||
from testutils import assertRaises
|
||||
|
||||
def dict_eq(d1, d2):
|
||||
return (all(k in d2 and d1[k] == d2[k] for k in d1)
|
||||
and all(k in d1 and d1[k] == d2[k] for k in d2))
|
||||
assert dict(a=2, b=3) == {'a': 2, 'b': 3}
|
||||
assert dict({'a': 2, 'b': 3}, b=4) == {'a': 2, 'b': 4}
|
||||
assert dict([('a', 2), ('b', 3)]) == {'a': 2, 'b': 3}
|
||||
|
||||
|
||||
assert dict_eq(dict(a=2, b=3), {'a': 2, 'b': 3})
|
||||
assert dict_eq(dict({'a': 2, 'b': 3}, b=4), {'a': 2, 'b': 4})
|
||||
assert dict_eq(dict([('a', 2), ('b', 3)]), {'a': 2, 'b': 3})
|
||||
assert {} == {}
|
||||
assert not {'a': 2} == {}
|
||||
assert not {} == {'a': 2}
|
||||
assert not {'b': 2} == {'a': 2}
|
||||
assert not {'a': 4} == {'a': 2}
|
||||
assert {'a': 2} == {'a': 2}
|
||||
|
||||
a = {'g': 5}
|
||||
b = {'a': a, 'd': 9}
|
||||
c = dict(b)
|
||||
c['d'] = 3
|
||||
c['a']['g'] = 2
|
||||
assert dict_eq(a, {'g': 2})
|
||||
assert dict_eq(b, {'a': a, 'd': 9})
|
||||
assert a == {'g': 2}
|
||||
assert b == {'a': a, 'd': 9}
|
||||
|
||||
a.clear()
|
||||
assert len(a) == 0
|
||||
@@ -142,10 +144,10 @@ assert list(x) == ['a', 'b']
|
||||
|
||||
y = x.copy()
|
||||
x['c'] = 12
|
||||
assert dict_eq(y, {'a': 2, 'b': 10})
|
||||
assert y == {'a': 2, 'b': 10}
|
||||
|
||||
y.update({'c': 19, "d": -1, 'b': 12})
|
||||
assert dict_eq(y, {'a': 2, 'b': 12, 'c': 19, 'd': -1})
|
||||
assert y == {'a': 2, 'b': 12, 'c': 19, 'd': -1}
|
||||
|
||||
y.update(y)
|
||||
assert dict_eq(y, {'a': 2, 'b': 12, 'c': 19, 'd': -1}) # hasn't changed
|
||||
assert y == {'a': 2, 'b': 12, 'c': 19, 'd': -1} # hasn't changed
|
||||
|
||||
Reference in New Issue
Block a user