Skip to content

Commit 03b1653

Browse files
committed
wrapping parens around Either's try and except
1 parent 4eea9c3 commit 03b1653

2 files changed

Lines changed: 49 additions & 13 deletions

File tree

screenpy/actions/either.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ def describe(self) -> str:
7575
get_additive_description(action) for action in self.except_performables
7676
)
7777

78-
return f"Either {try_summary} or {except_summary}"
78+
return f"Either ({try_summary} or {except_summary})"
7979

8080
def perform_as(self, the_actor: Actor) -> None:
8181
"""Direct the Actor to perform one of two performances."""

tests/test_actions.py

Lines changed: 48 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1199,20 +1199,56 @@ def test_describe(self) -> None:
11991199
mock_action2.describe.return_value = "produce stuff!"
12001200

12011201
t = Either(mock_action1).or_(mock_action2)
1202-
assert t.describe() == "Either do thing or produce stuff"
1202+
assert t.describe() == "Either (do thing or produce stuff)"
12031203

12041204
def test_multi_action_describe(self) -> None:
1205-
mock_action1 = FakeAction()
1206-
mock_action1.describe.return_value = "DoThing!"
1207-
mock_action2 = FakeAction()
1208-
mock_action2.describe.return_value = "DoStuff!"
1209-
mock_action3 = FakeAction()
1210-
mock_action3.describe.return_value = "PerformFoo."
1211-
mock_action4 = FakeAction()
1212-
mock_action4.describe.return_value = "PerformBar."
1213-
1214-
t = Either(mock_action1, mock_action2).or_(mock_action3, mock_action4)
1215-
assert t.describe() == "Either doThing, doStuff or performFoo, performBar"
1205+
act1 = FakeAction()
1206+
act1.describe.return_value = "DoAct1!"
1207+
act2 = FakeAction()
1208+
act2.describe.return_value = "DoAct2!"
1209+
act3 = FakeAction()
1210+
act3.describe.return_value = "DoAct3."
1211+
act4 = FakeAction()
1212+
act4.describe.return_value = "DoAct4?"
1213+
1214+
t1 = Either(act1, act2).or_(act3, act4)
1215+
t2 = Either(act1).or_(act3, act4)
1216+
t3 = Either(act1, act2).or_(act3)
1217+
1218+
assert t1.describe() == "Either (doAct1, doAct2 or doAct3, doAct4)"
1219+
assert t2.describe() == "Either (doAct1 or doAct3, doAct4)"
1220+
assert t3.describe() == "Either (doAct1, doAct2 or doAct3)"
1221+
1222+
def test_multi_action_describe_embedded(self) -> None:
1223+
act1 = FakeAction()
1224+
act1.describe.return_value = "DoAct1!"
1225+
act2 = FakeAction()
1226+
act2.describe.return_value = "DoAct2!"
1227+
act3 = FakeAction()
1228+
act3.describe.return_value = "DoAct3."
1229+
act4 = FakeAction()
1230+
act4.describe.return_value = "DoAct4?"
1231+
act5 = FakeAction()
1232+
act5.describe.return_value = "DoAct5!"
1233+
act6 = FakeAction()
1234+
act6.describe.return_value = "DoAct6!"
1235+
act7 = FakeAction()
1236+
act7.describe.return_value = "DoAct7."
1237+
act8 = FakeAction()
1238+
act8.describe.return_value = "DoAct8."
1239+
1240+
t1 = Either(act1, Either(act2, act3).or_(act4, act5), act6).or_(act7)
1241+
exp1 = "Either (doAct1, either (doAct2, doAct3 or doAct4, doAct5), doAct6 or doAct7)"
1242+
1243+
t2 = Either(act1, Either(act2).or_(act3)).or_(act4)
1244+
exp2 = "Either (doAct1, either (doAct2 or doAct3) or doAct4)"
1245+
1246+
t3 = Either(Either(act1).or_(act2)).or_(act3)
1247+
exp3 = "Either (either (doAct1 or doAct2) or doAct3)"
1248+
1249+
assert t1.describe() == exp1
1250+
assert t2.describe() == exp2
1251+
assert t3.describe() == exp3
12161252

12171253
def test_first_action_passes(self, Tester: Actor, mocker: MockerFixture) -> None:
12181254
mock_clear = mocker.spy(the_narrator, "clear_backup")

0 commit comments

Comments
 (0)