Skip to content

Commit 7947d65

Browse files
committed
test: update tests to include new result dunder methods
1 parent b717b3e commit 7947d65

2 files changed

Lines changed: 123 additions & 0 deletions

File tree

tests/test_advanced.py

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,34 @@ def test_result_err_initialization():
2828
result.raises()
2929

3030

31+
# Basic Initialization Tests
32+
def test_result_ok_attribute():
33+
result = Ok(42)
34+
assert result.Ok == 42
35+
assert result.unwrap() == 42
36+
assert result.expect() == 42
37+
assert result.raises() == Ok(42)
38+
with pytest.raises(ResultErr):
39+
_ = result.Err
40+
41+
42+
def test_result_err_initialization():
43+
error_message = "An error occurred"
44+
result = Result.as_Err(error_message)
45+
assert result.unwrap() == Err(error_message)
46+
assert result.is_Ok is False
47+
assert result.is_Err is True
48+
49+
with pytest.raises(ResultErr):
50+
_ = result.Ok
51+
52+
with pytest.raises(ResultErr):
53+
result.expect()
54+
55+
with pytest.raises(ResultErr):
56+
result.raises()
57+
58+
3159
# Edge Case Initialization
3260
def test_result_ok_with_none():
3361
result = Result.as_Ok(None)
@@ -91,6 +119,60 @@ def test_iter_list():
91119
assert enter_loop
92120

93121

122+
# Reverse Tests
123+
def test_reversed_err():
124+
result = Err(10)
125+
enter_loop = False
126+
for i in reversed(result):
127+
enter_loop = True # should never be true
128+
assert not enter_loop
129+
130+
131+
def test_reversed_scalar():
132+
result = Ok(10)
133+
enter_loop = False
134+
for i in reversed(result):
135+
assert i == 10
136+
enter_loop = True
137+
assert enter_loop
138+
139+
140+
def test_reversed_list():
141+
lst = [0, 1, 2, 3]
142+
result = Result.as_Ok(lst)
143+
enter_loop = False
144+
rev = reversed(lst)
145+
for j in reversed(result):
146+
assert j == next(rev)
147+
enter_loop = True
148+
assert enter_loop
149+
150+
rev = lst[::-1]
151+
enter_loop = False
152+
for i, j in enumerate(reversed(result)):
153+
assert j == rev[i]
154+
enter_loop = True
155+
assert enter_loop
156+
157+
lst[-1] = 99 # Because mutable, Ok(lst) changes too
158+
rev = lst[::-1]
159+
enter_loop = False
160+
for i, j in enumerate(reversed(result)):
161+
assert j == rev[i]
162+
enter_loop = True
163+
assert enter_loop
164+
165+
lst = [0, 1, 2, 3]
166+
result = Result.as_Ok(lst, deepcopy=True)
167+
enter_loop = False
168+
rev = lst[::-1]
169+
lst[-1] = 99 # does not effect result or rev because of deepcopy
170+
for i, j in enumerate(reversed(result)):
171+
assert j == rev[i]
172+
enter_loop = True
173+
assert enter_loop
174+
175+
94176
# Method Tests
95177
def test_is_ok_and():
96178
result = Result.as_Ok(10)

tests/test_wrapping_list.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,47 @@ def test_list_iter_err():
4646
assert not enter_loop
4747

4848

49+
def test_list_get_index():
50+
lst = [-2, -1, 0, 1, 2, 3]
51+
result = Ok(lst, deepcopy=True)
52+
assert len(result) == len(lst)
53+
54+
dim = len(lst)
55+
for i in range(dim):
56+
assert result[i] == lst[i]
57+
58+
for i in range(-1, 1 - dim):
59+
assert result[i] == lst[i]
60+
61+
for i in range(1, dim):
62+
assert result[i - 1 : i] == lst[i - 1 : i]
63+
64+
assert result[0:dim] == lst[0:dim]
65+
assert result[0 : dim - 2] == lst[0 : dim - 2]
66+
assert result[1 : dim - 2] == lst[1 : dim - 2]
67+
68+
69+
def test_list_set_index():
70+
lst = [-2, -1, 0, 1, 2, 3]
71+
result = Ok([-2, -1, 0, 1, 2, 3], deepcopy=True)
72+
assert len(result) == len(lst)
73+
74+
result[1] = 99
75+
assert result != lst
76+
lst[1] = 99
77+
assert result == lst
78+
79+
result[-2] = 98
80+
assert result != lst
81+
lst[-2] = 98
82+
assert result == lst
83+
84+
result[2:4] = [97, 97]
85+
assert result != lst
86+
lst[2:4] = [97, 97]
87+
assert result == lst
88+
89+
4990
def test_list_iter_values():
5091
result = Ok([0, 1, 2, 3, 4])
5192
enter_loop = False

0 commit comments

Comments
 (0)