File: test_ulist.py

package info (click to toggle)
pyscard 2.3.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,348 kB
  • sloc: python: 8,718; ansic: 1,971; makefile: 51; sh: 7
file content (107 lines) | stat: -rw-r--r-- 2,916 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
# pylint: disable=missing-module-docstring
# pylint: disable=too-many-statements

import pytest

import smartcard.ulist


def test_demonstrate_ulist_cannot_be_instantiated():
    """ulist() cannot be instantiated without an argument."""

    with pytest.raises(TypeError, match="'NoneType' object is not iterable"):
        smartcard.ulist.ulist()


@pytest.mark.xfail(reason="order should be ['x', 1, 2] not [1, 2, 'x']", strict=True)
def test_demonstrate_order_is_not_respected():
    """Order is not strictly respected."""

    instance = smartcard.ulist.ulist([1, 2])
    new_instance = ["x"] + instance
    assert new_instance == ["x", 1, 2]


@pytest.mark.xfail(reason="not all list methods are overwritten", strict=True)
def test_demonstrate_non_unique_behavior():
    """ulist.extend() breaks uniqueness guarantees."""

    instance = smartcard.ulist.ulist([1, 2])
    instance.extend([1, 2, 3])
    assert instance == [1, 2]  # actually, it's [1, 2, 1, 2, 3]


def test_ulist_methods():
    """This broadly tests the ulist implementation.

    It can be removed when ulist is removed.
    """

    smartcard.ulist.ulist([])
    smartcard.ulist.ulist([1])
    smartcard.ulist.ulist([1, 1])
    instance = smartcard.ulist.ulist([1])
    original_id = id(instance)
    assert instance
    assert len(instance) == 1
    assert instance == [1]
    assert id(instance) == original_id

    instance.append(1)
    assert instance
    assert len(instance) == 1
    assert instance == [1]
    assert id(instance) == original_id

    instance.append(2)
    assert instance
    assert len(instance) == 2
    assert instance == [1, 2]
    assert id(instance) == original_id

    new_instance = instance + [3]
    assert new_instance is not instance
    assert new_instance == [1, 2, 3]
    assert instance == [1, 2]
    assert id(instance) == original_id

    new_instance = instance + [1, 2]
    assert new_instance is not instance
    assert new_instance == [1, 2]
    assert instance == [1, 2]
    assert id(instance) == original_id

    new_instance = [1, 2] + instance
    assert new_instance is not instance
    assert new_instance == [1, 2]
    assert instance == [1, 2]
    assert id(instance) == original_id

    instance += 2
    assert instance == [1, 2]
    assert id(instance) == original_id

    instance.insert(0, 0)
    assert len(instance) == 3
    assert instance == [0, 1, 2]

    instance.insert(10_000, 0)
    assert len(instance) == 3
    assert instance == [0, 1, 2]

    value = instance.pop()
    assert value == 2
    assert instance == [0, 1]
    value = instance.pop(0)
    assert value == 0
    assert instance == [1]
    instance.pop()

    instance.append(0)
    instance.remove(0)
    with pytest.raises(ValueError):
        instance.remove(0)

    my_pristine_list = [0, 1, 2, 0, 1, 2, 0, 1, 2]
    instance += my_pristine_list
    assert my_pristine_list == [0, 1, 2, 0, 1, 2, 0, 1, 2]