File: test_identitydict.py

package info (click to toggle)
pypy 5.6.0%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 97,040 kB
  • ctags: 185,069
  • sloc: python: 1,147,862; ansic: 49,642; cpp: 5,245; asm: 5,169; makefile: 529; sh: 481; xml: 232; lisp: 45
file content (58 lines) | stat: -rw-r--r-- 1,286 bytes parent folder | download | duplicates (9)
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
import py
from rpython.tool.identity_dict import identity_dict, IdentityDictPurePython

class TestIdentityDictNative:
    identity_dict = identity_dict

    def test_numbers(self):
        d = self.identity_dict()
        d[0] = 1
        d[0.0] = 2
        d[long(0)] = 3

        assert d
        assert len(d) == 3
        d.clear()
        assert not d

    def test_get(self):
        d = self.identity_dict()
        d[None] = 1

        assert d.get(None, 42) == 1
        assert d.get(None) == 1
        assert d.get(1) is None
        assert d.get(1, 42) == 42

    def test_unhashable(self):
        d = self.identity_dict()
        d[[]] = 1
        d[[]] = 2
        a = []
        d[a] = 3
        assert len(d) == 3
        d[a] = 4
        assert len(d) == 3
        assert d[a] == 4

        py.test.raises(KeyError, d.__getitem__, [])

    def test_keys(self):
        d = self.identity_dict()
        d[[]] = 1
        d[[]] = 2
        d[[]] = 3

        assert d.keys() == [[], [], []]
        assert sorted(d.values()) == [1, 2, 3]

    def test_in(self):
        d = self.identity_dict()
        d[None] = 1

        assert None in d
        assert [] not in d


class TestIdentityDictPurePython(TestIdentityDictNative):
    identity_dict = IdentityDictPurePython