@@ -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
3260def 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
95177def test_is_ok_and ():
96178 result = Result .as_Ok (10 )
0 commit comments