Skip to content

Commit

Permalink
fix stack tests with deque
Browse files Browse the repository at this point in the history
  • Loading branch information
odrling committed Jan 13, 2024
1 parent cc29f33 commit d09d7b0
Showing 1 changed file with 37 additions and 35 deletions.
72 changes: 37 additions & 35 deletions shakespearelang/tests/test_stacks.py
@@ -1,3 +1,5 @@
from collections import deque

from shakespearelang import Shakespeare
from shakespearelang.errors import ShakespeareRuntimeError
import pytest
Expand All @@ -16,19 +18,19 @@ def test_push():
s.run_event("[Enter Romeo and Juliet]")

c = s.state.character_by_name("Juliet")
assert c.stack == []
assert c.stack == deque([])
assert c.value == 0

s.run_sentence("Remember a furry animal.", "Romeo")
assert c.stack == [2]
assert c.stack == deque([2])
assert c.value == 0

s.run_sentence("Remember a furry furry animal.", "Romeo")
assert c.stack == [2, 4]
assert c.stack == deque([2, 4])
assert c.value == 0

s.run_sentence("Remember a furry furry furry animal.", "Romeo")
assert c.stack == [2, 4, 8]
assert c.stack == deque([2, 4, 8])
assert c.value == 0


Expand All @@ -37,21 +39,21 @@ def test_pop():
s.run_event("[Enter Romeo and Juliet]")

c = s.state.character_by_name("Juliet")
assert c.stack == []
assert c.stack == deque([])
assert c.value == 0

c.stack = [234, 123, 678]
c.stack = deque([234, 123, 678])

s.run_sentence("Recall thy terrible memory of thy imminent death.", "Romeo")
assert c.stack == [234, 123]
assert c.stack == deque([234, 123])
assert c.value == 678

s.run_sentence("Recall thy terrible memory of thy imminent death.", "Romeo")
assert c.stack == [234]
assert c.stack == deque([234])
assert c.value == 123

s.run_sentence("Recall thy terrible memory of thy imminent death.", "Romeo")
assert c.stack == []
assert c.stack == deque([])
assert c.value == 234


Expand All @@ -60,53 +62,53 @@ def test_sequence():
s.run_event("[Enter Romeo and Juliet]")

c = s.state.character_by_name("Juliet")
assert c.stack == []
assert c.stack == deque([])
assert c.value == 0

c.stack = [234, 123, 678]
c.stack = deque([234, 123, 678])

s.run_sentence("Recall thy terrible memory of thy imminent death.", "Romeo")
assert c.stack == [234, 123]
assert c.stack == deque([234, 123])
assert c.value == 678

s.run_sentence("Remember a furry animal.", "Romeo")
assert c.stack == [234, 123, 2]
assert c.stack == deque([234, 123, 2])
assert c.value == 678

s.run_sentence("Recall thy terrible memory of thy imminent death.", "Romeo")
assert c.stack == [234, 123]
assert c.stack == deque([234, 123])
assert c.value == 2

s.run_sentence("Remember a furry furry animal.", "Romeo")
assert c.stack == [234, 123, 4]
assert c.stack == deque([234, 123, 4])
assert c.value == 2

s.run_sentence("Remember a furry furry furry animal.", "Romeo")
assert c.stack == [234, 123, 4, 8]
assert c.stack == deque([234, 123, 4, 8])
assert c.value == 2

s.run_sentence("Recall thy terrible memory of thy imminent death.", "Romeo")
assert c.stack == [234, 123, 4]
assert c.stack == deque([234, 123, 4])
assert c.value == 8

s.run_sentence("Remember a furry furry furry furry animal.", "Romeo")
assert c.stack == [234, 123, 4, 16]
assert c.stack == deque([234, 123, 4, 16])
assert c.value == 8

s.run_sentence("Recall thy terrible memory of thy imminent death.", "Romeo")
assert c.stack == [234, 123, 4]
assert c.stack == deque([234, 123, 4])
assert c.value == 16

s.run_sentence("Recall thy terrible memory of thy imminent death.", "Romeo")
assert c.stack == [234, 123]
assert c.stack == deque([234, 123])
assert c.value == 4

s.run_sentence("Recall thy terrible memory of thy imminent death.", "Romeo")
assert c.stack == [234]
assert c.stack == deque([234])
assert c.value == 123

s.run_sentence("Recall thy terrible memory of thy imminent death.", "Romeo")
assert c.stack == []
assert c.stack == deque([])
assert c.value == 234


Expand All @@ -115,7 +117,7 @@ def test_errors_on_pop_from_empty():
s.run_event("[Enter Romeo and Juliet]")

c = s.state.character_by_name("Juliet")
assert c.stack == []
assert c.stack == deque([])
assert c.value == 0

with pytest.raises(ShakespeareRuntimeError) as exc:
Expand All @@ -124,7 +126,7 @@ def test_errors_on_pop_from_empty():
assert ">>Recall thy terrible memory of thy imminent death.<<" in str(exc.value)
assert exc.value.interpreter == s

assert c.stack == []
assert c.stack == deque([])
assert c.value == 0


Expand All @@ -133,27 +135,27 @@ def test_conditional_push():
s.run_event("[Enter Romeo and Juliet]")

c = s.state.character_by_name("Juliet")
assert c.stack == []
assert c.stack == deque([])
assert c.value == 0

s.state.global_boolean = False
s.run_sentence("If so, remember a furry animal.", "Romeo")
assert c.stack == []
assert c.stack == deque([])
assert c.value == 0

s.state.global_boolean = True
s.run_sentence("If not, remember a furry animal.", "Romeo")
assert c.stack == []
assert c.stack == deque([])
assert c.value == 0

s.state.global_boolean = True
s.run_sentence("If so, remember a furry animal.", "Romeo")
assert c.stack == [2]
assert c.stack == deque([2])
assert c.value == 0

s.state.global_boolean = False
s.run_sentence("If not, remember a furry furry animal.", "Romeo")
assert c.stack == [2, 4]
assert c.stack == deque([2, 4])
assert c.value == 0


Expand All @@ -162,27 +164,27 @@ def test_conditional_pop():
s.run_event("[Enter Romeo and Juliet]")

c = s.state.character_by_name("Juliet")
assert c.stack == []
assert c.stack == deque([])
assert c.value == 0

c.stack = [234, 123, 678]
c.stack = deque([234, 123, 678])

s.state.global_boolean = False
s.run_sentence("If so, recall thy terrible memory of thy imminent death.", "Romeo")
assert c.stack == [234, 123, 678]
assert c.stack == deque([234, 123, 678])
assert c.value == 0

s.state.global_boolean = True
s.run_sentence("If not, recall thy terrible memory of thy imminent death.", "Romeo")
assert c.stack == [234, 123, 678]
assert c.stack == deque([234, 123, 678])
assert c.value == 0

s.state.global_boolean = True
s.run_sentence("If so, recall thy terrible memory of thy imminent death.", "Romeo")
assert c.stack == [234, 123]
assert c.stack == deque([234, 123])
assert c.value == 678

s.state.global_boolean = False
s.run_sentence("If not, recall thy terrible memory of thy imminent death.", "Romeo")
assert c.stack == [234]
assert c.stack == deque([234])
assert c.value == 123

0 comments on commit d09d7b0

Please sign in to comment.