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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
|
"Test sortedcollections.OrderedDict"
import pickle
import pytest
from sortedcollections import OrderedDict
pairs = dict(enumerate(range(10)))
def test_init():
od = OrderedDict()
assert len(od) == 0
od._check()
od = OrderedDict(enumerate(range(10)))
assert len(od) == 10
od._check()
od = OrderedDict(a=0, b=1, c=2)
assert len(od) == 3
od._check()
od = OrderedDict(pairs)
assert len(od) == 10
od._check()
def test_setitem():
od = OrderedDict()
od['alice'] = 0
od['bob'] = 1
od['carol'] = 2
assert len(od) == 3
od['carol'] = 2
assert len(od) == 3
od._check()
def test_delitem():
od = OrderedDict(pairs)
assert len(od) == 10
for value in range(10):
del od[value]
assert len(od) == 0
od._check()
def test_iter_reversed():
od = OrderedDict([('b', 0), ('a', 1), ('c', 2)])
assert list(od) == ['b', 'a', 'c']
assert list(reversed(od)) == ['c', 'a', 'b']
od._check()
def test_clear():
od = OrderedDict(pairs)
assert len(od) == 10
od.clear()
assert len(od) == 0
od._check()
def test_popitem():
od = OrderedDict(enumerate(range(10)))
for num in reversed(range(10)):
key, value = od.popitem()
assert num == key == value
od._check()
od = OrderedDict(enumerate(range(10)))
for num in range(10):
key, value = od.popitem(last=False)
assert num == key == value
od._check()
def test_keys():
od = OrderedDict(enumerate(range(10)))
assert list(reversed(od.keys())) == list(reversed(range(10)))
assert od.keys()[:3] == [0, 1, 2]
od._check()
def test_items():
items = list(enumerate(range(10)))
od = OrderedDict(enumerate(range(10)))
assert list(reversed(od.items())) == list(reversed(items))
assert od.items()[:3] == [(0, 0), (1, 1), (2, 2)]
od._check()
def test_values():
od = OrderedDict(enumerate(range(10)))
assert list(reversed(od.values())) == list(reversed(range(10)))
assert od.values()[:3] == [0, 1, 2]
od._check()
def test_iloc():
od = OrderedDict(enumerate(range(10)))
iloc = od.keys()
for num in range(10):
assert iloc[num] == num
iloc[-1] == 9
assert len(iloc) == 10
od._check()
def test_pop():
od = OrderedDict(enumerate(range(10)))
for num in range(10):
assert od.pop(num) == num
od._check()
assert od.pop(0, 'thing') == 'thing'
assert od.pop(1, default='thing') == 'thing'
od._check()
def test_pop_error():
od = OrderedDict()
with pytest.raises(KeyError):
od.pop(0)
def test_setdefault():
od = OrderedDict()
od.setdefault(0, False)
assert od[0] is False
od.setdefault(1, default=True)
assert od[1] is True
od.setdefault(2)
assert od[2] is None
assert od.setdefault(0) is False
assert od.setdefault(1) is True
def test_repr():
od = OrderedDict()
assert repr(od) == 'OrderedDict([])'
assert str(od) == 'OrderedDict([])'
def test_reduce():
od = OrderedDict(enumerate(range(10)))
data = pickle.dumps(od)
copy = pickle.loads(data)
assert od == copy
def test_copy():
od = OrderedDict(enumerate(range(10)))
copy = od.copy()
assert od == copy
def test_fromkeys():
od = OrderedDict.fromkeys('abc')
assert od == {'a': None, 'b': None, 'c': None}
od._check()
def test_equality():
od = OrderedDict.fromkeys('abc')
assert od == {'a': None, 'b': None, 'c': None}
assert od != {}
assert od != OrderedDict()
od._check()
|