Skip to content

Commit 08863eb

Browse files
committed
Add tests for Try
1 parent 662bac4 commit 08863eb

File tree

3 files changed

+39
-1
lines changed

3 files changed

+39
-1
lines changed

expression/core/try_.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@ class Try(Result[_TSource, Exception]):
2121
to use when the error type is an exception.
2222
"""
2323

24+
def __str__(self) -> str:
25+
"""Return a string representation of the Try."""
26+
match self:
27+
case Try(tag="ok", ok=ok):
28+
return f"Success {ok}"
29+
case Try(error=error):
30+
return f"Failure {error}"
31+
2432

2533
def Success(value: _TSource) -> Try[_TSource]:
2634
"""The successful Try case.

tests/test_gen.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ def fn() -> Generator[int, None, None]:
114114
assert value == 42
115115

116116

117-
def test_generator_with_yield_from_gen():
117+
def test_generator_with_yield_from_subgen():
118118
def gn():
119119
yield 42
120120

@@ -137,3 +137,24 @@ def fn() -> Generator[int, None, None]:
137137
gen = fn()
138138
value = next(gen)
139139
assert value == 42
140+
141+
def test_generator_with_yield_from_send_to_subgen():
142+
def gn() -> Generator[int, int|None, int]:
143+
ret = yield 42
144+
print("subgenerator: ret", ret)
145+
assert ret is not None
146+
return ret + 1
147+
148+
def fn() -> Generator[int, int|None, int]:
149+
ret = yield from gn()
150+
print("generator: ret", ret)
151+
return ret +1
152+
153+
gen = fn()
154+
value = gen.send(None)
155+
assert value == 42
156+
try:
157+
value = gen.send(10)
158+
except StopIteration as ex:
159+
print("StopIteration", ex.value)
160+
assert ex.value == 12

tests/test_try.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,12 @@ def test_try_match_failure():
2828
assert err == error
2929
case _:
3030
assert False
31+
32+
def test_try_to_string_success():
33+
xs: Try[int] = Success(10)
34+
assert str(xs) == "Success 10"
35+
36+
def test_try_to_string_failure():
37+
error = Exception("err")
38+
xs: Try[int] = Failure(error)
39+
assert str(xs) == "Failure err"

0 commit comments

Comments
 (0)