def test_multiple_call_set_on_the_same_cell(self, tape: Tape, args: t.Sequence[int], expected_value: int) -> None: for arg in args: tape.set(arg) actual_value = tape.get() assert actual_value == expected_value
def test_multiple_shifts_right_in_one_step(self, tape: Tape, step_number: int) -> None: for _ in range(step_number): tape.shift_right(1) tape.set(10) tape.shift_left(step_number) tape.shift_right(step_number) assert tape.get() == 10
def test_general_valid_scenarios(self, tape: Tape, scenario: t.Sequence[t.Callable[[Tape], None]], expected_result: int) -> None: for step in scenario: step(tape) actual_result = tape.get() assert actual_result == expected_result
def test_get(self, tape: Tape) -> None: assert tape.get() == 0
def test_shift_right(self, tape: Tape) -> None: tape.shift_right(1) assert tape.get() == 0
def test_set(self, tape: Tape) -> None: tape.set(1) assert tape.get() == 1
def test_multiple_call_get(self, tape: Tape, call_number: int) -> None: for _ in range(call_number): assert tape.get() == 0
def test_can_not_set_invalid_value(self, tape: Tape, invalid_value: int) -> None: with pytest.raises(ValueError): tape.set(invalid_value)
def test_set_all_valid_values(self, tape: Tape) -> None: for byte in range(0, 256): tape.set(byte) assert tape.get() == byte