def test_copying(): # Check that ordered dicts are copyable, deepcopyable, picklable, # and have a repr/eval round-trip pairs = [('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)] od = OrderedDict(pairs) def check(dup): assert dup is not od assert dup == od check(od.copy()) check(copy.copy(od)) check(copy.deepcopy(od)) for proto in range(pickle.HIGHEST_PROTOCOL + 1): check(pickle.loads(pickle.dumps(od, proto))) check(eval(repr(od))) update_test = OrderedDict() update_test.update(od) check(update_test) check(OrderedDict(od))
def test_od_update(): od = OrderedDict() with pytest.raises(TypeError): od.update([], [])
def test_update(): with pytest.raises(TypeError): OrderedDict().update([('a', 1), ('b', 2)], None) # too many args pairs = [('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)] od = OrderedDict() od.update(dict(pairs)) assert sorted(od.items()) == pairs # dict input od = OrderedDict() od.update(**dict(pairs)) assert sorted(od.items()) == pairs # kwds input od = OrderedDict() od.update(pairs) assert list(od.items()) == pairs # pairs input od = OrderedDict() od.update([('a', 1), ('b', 2), ('c', 9), ('d', 4)], c=3, e=5) assert list(od.items()) == pairs # mixed input # Issue 9137: Named argument called 'other' or 'self' # shouldn't be treated specially. if PY2 and sys.version_info >= (2, 7, 1) or PY3 and sys.version_info >= (3, 2): od = OrderedDict() od.update(self=23) assert list(od.items()) == [('self', 23)] od = OrderedDict() od.update(other={}) assert list(od.items()) == [('other', {})] od = OrderedDict() od.update(red=5, blue=6, other=7, self=8) assert sorted(list(od.items())) == [('blue', 6), ('other', 7), ('red', 5), ('self', 8)] # Make sure that direct calls to update do not clear previous contents # add that updates items are not moved to the end d = OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 44), ('e', 55)]) d.update([('e', 5), ('f', 6)], g=7, d=4) assert (list(d.items()) == [('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5), ('f', 6), ('g', 7)]) with pytest.raises(TypeError): OrderedDict().update(42) with pytest.raises(TypeError): OrderedDict().update((), ()) with pytest.raises(TypeError): OrderedDict.update()