File: test_frozen_list.py

package info (click to toggle)
graphql-core 3.2.6-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 5,384 kB
  • sloc: python: 45,812; makefile: 26; sh: 13
file content (113 lines) | stat: -rw-r--r-- 3,265 bytes parent folder | download
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
from copy import copy, deepcopy

from pytest import raises

from graphql.pyutils import FrozenError, FrozenList


def describe_frozen_list():
    def can_read():
        fl = FrozenList([1, 2, 3])
        assert fl == [1, 2, 3]
        assert list(i for i in fl) == fl
        assert fl.copy() == fl
        assert 2 in fl
        assert 4 not in fl
        assert fl + [4, 5] == [1, 2, 3, 4, 5]
        assert [4, 5] + fl == [4, 5, 1, 2, 3]
        assert fl * 2 == [1, 2, 3, 1, 2, 3]
        assert 2 * fl == [1, 2, 3, 1, 2, 3]
        assert fl[1] == 2
        with raises(IndexError):
            fl[3]
        assert fl[1:4] == [2, 3]
        assert fl[::2] == [1, 3]
        assert len(fl) == 3
        assert min(fl) == 1
        assert max(fl) == 3
        assert sum(fl) == 6
        assert fl.index(2) == 1
        with raises(ValueError):
            fl.index(4)
        assert fl.count(2) == 1
        assert fl.count(4) == 0
        assert list(reversed(fl)) == [3, 2, 1]
        assert sorted(fl) == [1, 2, 3]

    def cannot_write():
        fl = FrozenList([1, 2, 3])
        with raises(FrozenError):
            fl[1] = 4
        with raises(FrozenError):
            fl[1:4] = [4]
        with raises(FrozenError):
            del fl[1]
        with raises(FrozenError):
            del fl[1:4]
        with raises(FrozenError):
            fl[1::2] = [4]
        with raises(FrozenError):
            del fl[::2]
        with raises(FrozenError):
            fl.append(4)
        with raises(FrozenError):
            fl.clear()
        with raises(FrozenError):
            fl.extend([4])
        with raises(FrozenError):
            fl += [4]
        with raises(FrozenError):
            fl *= 2
        with raises(FrozenError):
            fl.insert(1, 4)
        with raises(FrozenError):
            fl.pop()
        with raises(FrozenError):
            fl.remove(2)
        with raises(FrozenError):
            fl.sort()
        with raises(FrozenError):
            fl.reverse()
        assert fl == [1, 2, 3]

    def can_add_rol():
        fl1 = FrozenList([1, 2])
        rol2 = FrozenList([3, 4])
        assert fl1 + rol2 == [1, 2, 3, 4]

    def can_add_tuple():
        fl = FrozenList([1, 2])
        assert fl + (3, 4) == [1, 2, 3, 4]

    def can_hash():
        fl1 = FrozenList([1, 2])
        fl2 = FrozenList([1, 2])
        assert fl2 == fl1
        assert fl2 is not fl1
        assert hash(fl2) == hash(fl1)
        fl3 = FrozenList([1, 3])
        assert fl3 != fl1
        assert hash(fl3) != hash(fl1)

    def can_copy():
        fl1 = FrozenList([1, 2])
        fl2 = copy(fl1)
        assert isinstance(fl2, FrozenList)
        assert fl2 == fl1
        assert hash(fl2) == hash(fl1)
        assert fl2 is not fl1

    def can_deep_copy():
        fl11 = FrozenList([1, 2])
        fl12 = FrozenList([2, 1])
        fl1 = FrozenList([fl11, fl12])
        fl2 = deepcopy(fl1)
        assert isinstance(fl2, FrozenList)
        assert fl2 == fl1
        assert hash(fl2) == hash(fl1)
        assert isinstance(fl2[0], FrozenList)
        assert isinstance(fl2[1], FrozenList)
        assert fl2[0] == fl1[0]
        assert fl2[0] is not fl1[0]
        assert fl2[1] == fl1[1]
        assert fl2[1] is not fl1[1]