예제 #1
0
def test_od_create():
    od = OrderedDict()
    assert od.keys() == []

    od = OrderedDict([("a", "b"), ("c", "d"), ("foo", "bar")])
    assert od.keys() == ["a", "c", "foo"]

    od = OrderedDict(a="b", c="d", foo="bar")
    assert set(od.keys()) == set(["a", "c", "foo"])
예제 #2
0
def test_od_create():
    od = OrderedDict()
    assert od.keys() == []

    od = OrderedDict([('a', 'b'), ('c', 'd'), ('foo', 'bar')])
    assert od.keys() == ['a', 'c', 'foo']

    od = OrderedDict(a='b', c='d', foo='bar')
    assert set(od.keys()) == set(['a', 'c', 'foo'])
예제 #3
0
def test_od_setdefault():
    od = OrderedDict([('a', 'b')])

    assert od.setdefault('foo') is None
    assert od.keys() == ['a', 'foo']

    assert od.setdefault('bar', 'baz') == 'baz'
    assert od.keys() == ['a', 'foo', 'bar']

    assert od.setdefault('a') == 'b'
    assert od == {'a': 'b', 'foo': None, 'bar': 'baz'}
예제 #4
0
def test_od_setdefault():
    od = OrderedDict([("a", "b")])

    assert od.setdefault("foo") is None
    assert od.keys() == ["a", "foo"]

    assert od.setdefault("bar", "baz") == "baz"
    assert od.keys() == ["a", "foo", "bar"]

    assert od.setdefault("a") == "b"
    assert od == {"a": "b", "foo": None, "bar": "baz"}
def test_pickle_recursive():
    od = OrderedDict()
    od['x'] = od
    rec = pickle.loads(pickle.dumps(od))
    assert list(od.keys()) == list(rec.keys())
    assert od is not rec
    assert rec['x'] is rec
예제 #6
0
def test_pickle_recursive():
    od = OrderedDict()
    od['x'] = od
    rec = pickle.loads(pickle.dumps(od))
    assert list(od.keys()) == list(rec.keys())
    assert od is not rec
    assert rec['x'] is rec
예제 #7
0
def test_od_popitem():
    od = OrderedDict([("a", "b"), ("c", "d"), ("foo", "bar")])

    assert od.popitem() == ("a", "b")
    assert "a" not in od
    assert od.keys() == ["c", "foo"]

    assert od.popitem() == ("c", "d")
    assert "c" not in od
    assert od.keys() == ["foo"]

    assert od.popitem() == ("foo", "bar")
    assert "foo" not in od
    assert od.keys() == []

    with pytest.raises(KeyError):
        od.popitem()
예제 #8
0
def test_iterators(f):
    pairs = [('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)]
    shuffle(pairs)
    od = OrderedDict(pairs)
    assert list(f(od)) == [t[0] for t in f(pairs)]
    assert list(f(od.keys())) == [t[0] for t in f(pairs)]
    assert list(f(od.values())) == [t[1] for t in f(pairs)]
    assert list(f(od.items())) == list(f(pairs))
예제 #9
0
def test_od_popitem():
    od = OrderedDict([('a', 'b'), ('c', 'd'), ('foo', 'bar')])

    assert od.popitem() == ('a', 'b')
    assert 'a' not in od
    assert od.keys() == ['c', 'foo']

    assert od.popitem() == ('c', 'd')
    assert 'c' not in od
    assert od.keys() == ['foo']

    assert od.popitem() == ('foo', 'bar')
    assert 'foo' not in od
    assert od.keys() == []

    with pytest.raises(KeyError):
        od.popitem()
def test_iterators(f):
    pairs = [('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)]
    shuffle(pairs)
    od = OrderedDict(pairs)
    assert list(f(od)) == [t[0] for t in f(pairs)]
    assert list(f(od.keys())) == [t[0] for t in f(pairs)]
    assert list(f(od.values())) == [t[1] for t in f(pairs)]
    assert list(f(od.items())) == list(f(pairs))
예제 #11
0
def test_od_deepcopy():
    lst = [1, 2, 3]
    od = OrderedDict(a=lst)
    new_od = deepcopy(od)
    new_od['a'].append(4)

    assert od['a'] is lst
    assert lst == [1, 2, 3]
    assert new_od['a'] == [1, 2, 3, 4]
    assert od.keys() == new_od.keys()
예제 #12
0
def test_od_pop():
    od = OrderedDict([('a', 'b'), ('c', 'd'), ('foo', 'bar')])

    assert od.pop('a') == 'b'
    assert 'a' not in od
    assert od.keys() == ['c', 'foo']

    assert od.pop('bar', 1) == 1

    with pytest.raises(KeyError):
        od.pop('bar')
예제 #13
0
def test_od_pop():
    od = OrderedDict([("a", "b"), ("c", "d"), ("foo", "bar")])

    assert od.pop("a") == "b"
    assert "a" not in od
    assert od.keys() == ["c", "foo"]

    assert od.pop("bar", 1) == 1

    with pytest.raises(KeyError):
        od.pop("bar")
예제 #14
0
def test_od_sort():
    items = []
    for i in range(10):
        items.append((i, 9 - i))

    od = OrderedDict(items)
    od.sort(key=lambda x: x[1])

    assert od.keys() == list(range(9, -1, -1))

    items = []
    for i in range(10):
        items.append((9 - i, 9 - i))

    od = OrderedDict(items)
    od.sort()

    assert od.keys() == list(range(10))

    od = OrderedDict(items)
    od.sort(reverse=True)

    assert od.keys() == list(range(9, -1, -1))
예제 #15
0
def test_sort():
    items = []
    for i in range(10):
        items.append((i, 9 - i))

    od = OrderedDict(items)
    od.sort(cmp=lambda x, y: cmp(x[1], y[1]))

    assert od.keys() == range(9, -1, -1)

    items = []
    for i in range(10):
        items.append((9 - i, 9 - i))

    od = OrderedDict(items)
    od.sort()

    assert od.keys() == range(10)

    od = OrderedDict(items)
    od.sort(reverse=True)

    assert od.keys() == range(9, -1, -1)
예제 #16
0
def test_sort():
    items = []
    for i in range(10):
        items.append((i, 9 - i))

    od = OrderedDict(items)
    od.sort(key=lambda x: x[1])

    assert od.keys() == list(range(9, -1, -1))

    items = []
    for i in range(10):
        items.append((9 - i, 9 - i))

    od = OrderedDict(items)
    od.sort()

    assert od.keys() == list(range(10))

    od = OrderedDict(items)
    od.sort(reverse=True)

    assert od.keys() == list(range(9, -1, -1))
예제 #17
0
def test_od_delete_key():
    od = OrderedDict([('a', 'b'), ('c', 'd'), ('foo', 'bar')])
    del od['c']
    assert od.keys() == ['a', 'foo']
예제 #18
0
def test_od_delete_key():
    od = OrderedDict([("a", "b"), ("c", "d"), ("foo", "bar")])
    del od["c"]
    assert od.keys() == ["a", "foo"]