File: apptest_ordereddict.py

package info (click to toggle)
pypy3 7.3.19%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 212,236 kB
  • sloc: python: 2,098,316; ansic: 540,565; sh: 21,462; asm: 14,419; cpp: 4,451; makefile: 4,209; objc: 761; xml: 530; exp: 499; javascript: 314; pascal: 244; lisp: 45; csh: 12; awk: 4
file content (86 lines) | stat: -rw-r--r-- 2,472 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# spaceconfig = {"usemodules" : ["_collections"]}

from _collections import OrderedDict

class MyODict(OrderedDict):
    pass

def test_ordereddict_present():
    assert issubclass(OrderedDict, dict)
    assert hasattr(OrderedDict, 'move_to_end')

def test_recursive_repr():
    d = OrderedDict()
    d[1] = d
    assert repr(d) == 'OrderedDict([(1, ...)])'

def test_subclass():
    class MyODict(OrderedDict):
        def __setitem__(self, key, value):
            super().__setitem__(key, 42)
    d = MyODict(x=1)
    assert d['x'] == 42
    d.update({'y': 2})
    assert d['y'] == 42

def test_reversed():
    import sys

    pairs = [('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)]
    od = OrderedDict(pairs)
    if '__pypy__' in sys.builtin_module_names:
        # dict ordering is wrong when testing interpreted on top of CPython
        pairs = list(dict(od).items())
    assert list(reversed(od)) == [t[0] for t in reversed(pairs)]
    assert list(reversed(od.keys())) == [t[0] for t in reversed(pairs)]
    assert list(reversed(od.values())) == [t[1] for t in reversed(pairs)]
    assert list(reversed(od.items())) == list(reversed(pairs))

def test_call_key_first():

    calls = []
    class Spam:
        def keys(self):
            calls.append('keys')
            return ()
        def items(self):
            calls.append('items')
            return ()

    OrderedDict(Spam())
    assert calls == ['keys']

def test_generic_alias():
    import _collections
    ga = _collections.OrderedDict[int]
    assert ga.__origin__ is _collections.OrderedDict
    assert ga.__args__ == (int, )

def test_or():
    d1 = OrderedDict({1: 2, 3: 4})
    d2 = MyODict({1: 4, 5: 6})
    assert type(d1 | d2) is OrderedDict
    assert d1 | d2 == {1: 4, 3: 4, 5: 6}
    assert type(dict(d1) | d2) is MyODict
    assert d1 | d2 == {1: 4, 3: 4, 5: 6}

def test_ior():
    orig = d = OrderedDict({'spam': 1, 'eggs': 2, 'cheese': 3})
    e = {'cheese': 'cheddar', 'aardvark': 'Ethel'}
    d |= e
    assert orig == {'spam': 1, 'eggs': 2, 'cheese': 'cheddar', 'aardvark': 'Ethel'}

def test_mixed_type_or_bug():
    d = {1: 1} | OrderedDict({1: 2})
    assert type(d) is OrderedDict
    assert d == OrderedDict({1: 2})

def test_reduce():
    class D(OrderedDict):
        __slots__ = ('x', 'y')
    d1 = D({1: 2, 3: 4})
    d1.x = ['x']
    d1.z = ['z']
    r = d1.__reduce_ex__(4)
    assert isinstance(r[2], tuple)
    assert r[2] == ({'z': ['z']}, {'x': ['x']})