Пример #1
0
    def __init__(self, type_library: PushTypeLibrary, push_config: PushConfig):
        super().__init__()
        self.stdout = ""
        self.inputs = []
        self.untyped = deque([])
        self.type_library = type_library
        self.push_config = push_config

        for name, push_type in type_library.items():
            self[name] = PushStack(push_type, push_config)
Пример #2
0
def str_stack(atoms, push_config):
    return PushStack(PushStr, push_config)
Пример #3
0
def str_stack(atoms):
    return PushStack(PushStr)
Пример #4
0
 def test_large_str(self, str_stack: PushStack):
     s = "largestr" * 1000
     str_stack.push(s)
     assert len(str_stack.pop()) != len(s)
Пример #5
0
 def test_set_nth_oob(self, str_stack: PushStack):
     with pytest.raises(IndexError):
         str_stack.push("a").push("b").push("c").set_nth(10, "z")
Пример #6
0
 def test_insert_oob(self, str_stack: PushStack):
     str_stack.push("a").push("b").push("c").insert(10, "z")
     assert len(str_stack) == 4
     assert str_stack.nth(1) == "b"
     assert str_stack.nth(3) == "z"
Пример #7
0
 def test_top(self, int_stack: PushStack):
     int_stack.push(5).push(-10)
     assert int_stack.top() == -10
Пример #8
0
 def test_nth(self, int_stack: PushStack):
     int_stack.push(5).push(4).push(3)
     assert int_stack.nth(1) == 4
Пример #9
0
 def test_top(self, int_stack: PushStack):
     int_stack.push(5).push(-10)
     assert int_stack.top() == -10
Пример #10
0
 def test_nth_oob(self, int_stack: PushStack):
     int_stack.push(5)
     assert int_stack.nth(1) == Token.no_stack_item
Пример #11
0
 def test_nth(self, int_stack: PushStack):
     int_stack.push(5).push(4).push(3)
     assert int_stack.nth(1) == 4
Пример #12
0
 def test_push_wrong_type(self, int_stack: PushStack):
     with pytest.raises(PushError):
         int_stack.push("zz")
Пример #13
0
 def test_push(self, int_stack: PushStack):
     int_stack.push(5)
     assert len(int_stack) == 1
Пример #14
0
 def test_init_values(self):
     stack = PushStack(PushStr, ["bottom", "middle", "top"])
     assert stack.top() == "top"
     assert list(stack) == ["bottom", "middle", "top"]
Пример #15
0
def int_stack(atoms):
    return PushStack(PushInt)
Пример #16
0
 def test_push(self, int_stack: PushStack):
     int_stack.push(5)
     assert len(int_stack) == 1
Пример #17
0
 def test_push_wrong_type(self, int_stack: PushStack):
     with pytest.raises(PushError):
         int_stack.push("zz")
Пример #18
0
 def test_top_of_empty(self, int_stack: PushStack):
     assert int_stack.top() == Token.no_stack_item
Пример #19
0
 def test_nth_oob(self, int_stack: PushStack):
     int_stack.push(5)
     assert int_stack.nth(1) == Token.no_stack_item
Пример #20
0
 def test_insert_oob(self, str_stack: PushStack):
     str_stack.push("a").push("b").push("c").insert(10, "z")
     assert len(str_stack) == 4
     assert str_stack.nth(1) == "b"
     assert str_stack.nth(3) == "z"
Пример #21
0
 def test_top_of_empty(self, int_stack: PushStack):
     assert int_stack.top() == Token.no_stack_item
Пример #22
0
 def test_set_nth(self, str_stack: PushStack):
     str_stack.push("a").push("b").push("c").push("d").set_nth(1, "z")
     assert len(str_stack) == 4
     assert str_stack.nth(1) == "z"
Пример #23
0
 def test_set_nth(self, str_stack: PushStack):
     str_stack.push("a").push("b").push("c").push("d").set_nth(1, "z")
     assert len(str_stack) == 4
     assert str_stack.nth(1) == "z"
Пример #24
0
 def test_set_nth_oob(self, str_stack: PushStack):
     with pytest.raises(IndexError):
         str_stack.push("a").push("b").push("c").set_nth(10, "z")
Пример #25
0
 def test_flush(self, int_stack: PushStack):
     int_stack.push(1).push(-1).flush()
     assert len(int_stack) == 0
Пример #26
0
 def test_flush(self, int_stack: PushStack):
     int_stack.push(1).push(-1).flush()
     assert len(int_stack) == 0
Пример #27
0
def int_stack(atoms, push_config):
    return PushStack(PushInt, push_config)
Пример #28
0
 def _register_stack_of_type(self, push_type: PushType):
     """Add a new stack."""
     self[push_type.name] = PushStack(push_type)