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]
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]