Beispiel #1
0
def test_keys_reference_counting():
    d = SortedDict()
    d[1] = 'a'
    assert d.keys() == (1, )

    d[2] = 'b'
    assert d.keys() == (1, 2)
Beispiel #2
0
def test_init_from_dict():
    with pytest.raises(TypeError):
        asc = SortedDict("a", ordering='ASC')

    with pytest.raises(TypeError):
        asc = SortedDict({}, {}, ordering='ASC')

    asc = SortedDict({
        4: 'a',
        1: 'c',
        3: 'f',
        6: 'j',
        9: 'z',
        2: 'p'
    },
                     ordering='ASC')
    assert asc.to_dict() == {1: 'c', 2: 'p', 3: 'f', 4: 'a', 6: 'j', 9: 'z'}
    assert list(asc.keys()) == [1, 2, 3, 4, 6, 9]

    desc = SortedDict({
        4: 'a',
        1: 'c',
        3: 'f',
        6: 'j',
        9: 'z',
        2: 'p'
    },
                      ordering='DESC')
    assert desc.to_dict() == {1: 'c', 2: 'p', 3: 'f', 4: 'a', 6: 'j', 9: 'z'}
    assert list(desc.keys()) == [9, 6, 4, 3, 2, 1]
Beispiel #3
0
def test_to_dict():
    random.seed()
    values = []
    asc = SortedDict(ordering='ASC')
    desc = SortedDict(ordering='DESC')

    for _ in range(2000):
        values.append(random.uniform(0.0, 100000.0))
    values = set(values)

    for v in values:
        asc[v] = str(v)
        desc[v] = str(v)

    d = asc.to_dict()
    assert list(d.keys()) == list(asc.keys())
    assert sorted(d.keys()) == list(d.keys())
    previous = None
    for key, _ in d.items():
        assert d[key] == asc[key]
        if previous:
            d[key] > previous
        previous = d[key]

    d = desc.to_dict()
    assert list(d.keys()) == list(desc.keys())
    assert list(reversed(sorted(d.keys()))) == list(d.keys())
    previous = None
    for key, val in d.items():
        assert d[key] == desc[key]
        if previous:
            d[key] < previous
        previous = d[key]
Beispiel #4
0
def test_depth_auto_truncate():
    d = SortedDict({i: i for i in range(100)}, truncate=True, max_depth=10)

    del d[5]
    assert d.keys() == (0, 1, 2, 3, 4, 6, 7, 8, 9)

    d[1.1] = 0
    d[1.2] = 0
    d[1.3] = 0
    assert d.keys() == (0, 1, 1.1, 1.2, 1.3, 2, 3, 4, 6, 7)
Beispiel #5
0
def test_descending():
    s = SortedDict(ordering='DESC')
    s[1] = "a"
    s[3] = "b"
    s[2] = "c"

    assert s.keys() == (3, 2, 1)
Beispiel #6
0
def test_ascending():
    s = SortedDict(ordering='ASC')
    s[3] = "a"
    s[2] = "b"
    s[1] = "c"

    assert s.keys() == (1, 2, 3)
Beispiel #7
0
def test_default_ordering():
    # default ordering is ascending
    d = SortedDict()
    d[3] = 'a'
    d[2] = 'b'
    d[1] = 'c'

    assert list(d.keys()) == [1, 2, 3]
Beispiel #8
0
def test_del():
    d = SortedDict()
    d[3] = 'a'
    d[2] = 'b'
    d[1] = 'c'

    del d[2]

    assert d.keys() == (1, 3)
Beispiel #9
0
def test_decimal():
    s = SortedDict(ordering='DESC')
    s[Decimal('1.2')] = "a"
    s[Decimal('1.5')] = "b"
    s[Decimal('1.6')] = "c"
    s[Decimal('1.7')] = "d"

    assert len(s) == 4

    assert s.keys() == (Decimal('1.7'), Decimal('1.6'), Decimal('1.5'),
                        Decimal('1.2'))
Beispiel #10
0
def test_depth_truncated():
    d = SortedDict({i: i for i in range(100)}, max_depth=10)
    d.truncate()

    del d[5]
    assert d.keys() == (0, 1, 2, 3, 4, 6, 7, 8, 9)
Beispiel #11
0
def test_depth():
    d = SortedDict({i: i for i in range(100)}, max_depth=10)
    assert d.keys() == (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
    assert len(d) == 10
Beispiel #12
0
def test_empty_keys():
    d = SortedDict()
    assert d.keys() == ()