def test_stdin_stdout_kwargs(self): ret = interpret(',>,>,>,<<<.>.>.>.', buffer_output=True, input_data='dddd') self.assertEqual('dddd', ret) ret = interpret(',>,>,>,<<<.>.>.>.', buffer_output=True, input_data='abcd') self.assertEqual('abcd', ret) ret = interpret(',>,>,>,>,<<<<.>.>.>.>.', buffer_output=True, input_data='pphhu') self.assertEqual('pphhu', ret)
def test_read_byte_func(self): def read_byte_func1(): return ord('x') ret = interpret(',>,>,>,>,<<<<.>.>.>.>.', read_byte=read_byte_func1, buffer_output=True) self.assertEqual(ret, 'xxxxx') def read_byte_func2(): return ord('y') ret = interpret(',>,>,>,>,<<<<.>.>.>.>.', read_byte=read_byte_func2, buffer_output=True) self.assertEqual(ret, 'yyyyy')
def test_write_byte_func(self): read_data = [] def write_byte_func(i): read_data.append(chr(i)) ret = interpret(',>,>,>,>,<<<<.>.>.>.>.', write_byte=write_byte_func, input_data='zxcvb') self.assertEqual(None, ret) self.assertEqual(''.join(read_data), 'zxcvb') # Repeat the same test with some different data read_data = [] ret = interpret(',>,>,>,>,<<<<.>.>.>.>.', write_byte=write_byte_func, input_data='howdy') self.assertEqual(None, ret) self.assertEqual(''.join(read_data), 'howdy')
def interpret(self, stdin: str = None, tape_size: int = 30000) -> str: """ Execute Brainf**k source. This function uses bfi (https://pypi.org/project/bfi/) internally. """ ret = interpret(self.__text, input_data=stdin, tape_size=tape_size, buffer_output=True) return ret
def test_read_write_byte_funcs(self): write_data = [] def write_byte_func(i): write_data.append(chr(i)) def read_byte_func(): return ord('q') ret = interpret(',>,>,>,>,<<<<.>.>.>.>.', read_byte=read_byte_func, write_byte=write_byte_func) self.assertEqual(ret, None) self.assertEqual(''.join(write_data), 'qqqqq')
def verify_program(self, name, stdin, stdout): with SampleCode(name) as program: out = interpret(program, input_data=stdin, buffer_output=True) self.assertEqual(out, stdout, "Brainfuck program %s gave unexpected output: %s" % (name, out))
def test_stdout_kwarg(self): with SampleCode("hello_world") as program: self.assertEqual(interpret(program), None) ret = interpret(program, buffer_output=True) self.assertEqual(ret.strip(), "Hello World!")