-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathtest_printer_program.py
More file actions
30 lines (23 loc) · 1.04 KB
/
test_printer_program.py
File metadata and controls
30 lines (23 loc) · 1.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
"""
tests of the class core.get_printer_program
"""
from string_to_code import core
def test_trivial_for_empty_input():
"""program printing an empty string is trivial"""
printer_program = core.get_printer_program("")
assert printer_program.initial_call is None
assert not printer_program.needed_functions
def test_initial_call_is_atom_for_single_char():
"""program printing a single character has single atomic print"""
example = "a"
printer_program = core.get_printer_program(example)
assert isinstance(printer_program.initial_call, core.Atom)
assert not printer_program.needed_functions
assert printer_program.initial_call.atom_char == example
def test_non_trivial_for_regular_input():
"""program printing a string longer than 1 is non-trivial"""
example = "some string"
printer_program = core.get_printer_program(example)
assert isinstance(printer_program.initial_call, int)
assert printer_program.needed_functions
assert printer_program.initial_call == len(printer_program.needed_functions) - 1