forked from jcharra/ook
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_ook.py
126 lines (102 loc) · 4.65 KB
/
test_ook.py
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
import unittest
from ook import Interpreter, OokParser, BrainfuckParser
TEST_STRING_GC = """
ook. ook. ook. ook. ook. ook. ook. ook. ook! ook.
ook. ook. ook. ook. ook. ook. ook. ook. ook! ook.
ook. ook? ook! ook.
ook. ook. ook! ook.
ook! ook.
ook! ook.
ook! ook! ook! ook.
ook. ook. ook. ook. ook. ook. ook. ook.
ook! ook?
ook. ook? ook. ook. ook. ook? ook. ook. ook. ook. ook? ook. ook? ook. ook! ook!
ook? ook!
ook. ook? ook. ook? ook! ook! ook! ook.
ook? ook. ook! ook.
ook. ook? ook! ook! ook! ook.
ook. ook. ook. ook. ook. ook. ook! ook.
ook! ook! ook! ook.
ook? ook. ook! ook.
"""
GC_OUTPUT = [4, 8, 0, 1, 1, 1, 0, 7, 4, 6, 9, 8, 4]
class OokParserTest(unittest.TestCase):
def test_ookparser(self):
parser = OokParser()
li = list(parser.parse("ook. OOk. Ook! oOk?"))
assert li == [("ook.", "ook."), ("ook!", "ook?")], "List is %s" % li
class BrainfuckParserTest(unittest.TestCase):
def test_bfparser(self):
parser = BrainfuckParser()
li = list(parser.parse("++++"))
assert li == ["+", "+", "+", "+"], "List is %s" % li
class OokTest(unittest.TestCase):
def setUp(self):
self.ook = Interpreter()
def test_incdec(self):
self.ook.interpret_items([("ook.", "ook.")])
assert list(self.ook.cells) == [1], "Inc failed"
self.ook.interpret_items([("ook!", "ook!")])
assert list(self.ook.cells) == [0], "Dec failed"
def test_leftright(self):
self.ook.interpret_items([("ook.", "ook?")])
assert list(self.ook.cells) == [0, 0], "Right failed"
assert self.ook.index == 1, "Index move to the right failed"
self.ook.interpret_items([("ook?", "ook.")])
assert list(self.ook.cells) == [0, 0], "Left failed"
assert self.ook.index == 0, "Index move to the left failed"
self.ook.interpret_items([("ook?", "ook.")])
assert list(self.ook.cells) == [0, 0, 0], "Left failed"
assert self.ook.index == 0, "Index move to the left failed"
def test_raw_inc(self):
self.ook.interpret_raw_text("ook. ook.")
assert list(self.ook.cells) == [1], "Raw inc failed"
def test_javaner(self):
self.ook.interpret_raw_text(TEST_STRING_GC)
assert self.ook.output_buffer == GC_OUTPUT, "Output is %s instead of %s" % (self.ook.output_buffer, GC_OUTPUT)
def test_helloworld(self):
self.ook.interpret_file('ooktest.txt')
assert self.ook.as_ascii() == 'Hello World!', 'Helloworld failed: %s' % self.ook.as_ascii()
def test_simple_loop(self):
self.ook.interpret_raw_text("ook. ook. ook! ook? ook! ook! ook? ook! ook! ook.")
assert self.ook.output_buffer == [0], self.ook.output_buffer
def test_nested_loop(self):
self.ook.interpret_raw_text("ook. ook. ook! ook? "
"ook. ook. ook! ook? "
"ook! ook! ook? ook! ook? ook! ook! ook.")
assert self.ook.output_buffer == [0], self.ook.output_buffer
def test_squares(self):
self.ook.interpret_file('squares.ook')
assert "10000" in self.ook.as_ascii(), "Output squares: %" % self.ook.as_ascii()
class BFTest(unittest.TestCase):
def setUp(self):
self.bf = Interpreter(ook_mode=False)
def test_incdec(self):
self.bf.interpret_items(["+"])
assert list(self.bf.cells) == [1], "Inc failed"
self.bf.interpret_items(["-"])
assert list(self.bf.cells) == [0], "Dec failed"
def test_leftright(self):
self.bf.interpret_items([">"])
assert list(self.bf.cells) == [0, 0], "Right failed"
assert self.bf.index == 1, "Index move to the right failed"
self.bf.interpret_items(["<"])
assert list(self.bf.cells) == [0, 0], "Left failed"
assert self.bf.index == 0, "Index move to the left failed"
def test_raw_inc(self):
self.bf.interpret_raw_text("+")
assert list(self.bf.cells) == [1], "Raw inc failed"
def test_helloworld(self):
self.bf.interpret_file('bftest.txt')
assert self.bf.as_ascii() == "Hello World!\n", "Helloworld failed: '%s'" % self.bf.as_ascii()
def test_simple_loop(self):
self.bf.interpret_raw_text("+[-].")
assert self.bf.output_buffer == [0], self.bf.output_buffer
def test_nested_loop(self):
self.bf.interpret_raw_text("+[+[-]].")
assert self.bf.output_buffer == [0], self.bf.output_buffer
def test_ignore_whitespace(self):
self.bf.interpret_raw_text(" + + + - - ")
assert list(self.bf.cells) == [1], "List is %s" % list(self.bf.cells)
if __name__ == '__main__':
unittest.main()