Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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')
Exemplo n.º 3
0
    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')
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
    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')
Exemplo n.º 6
0
 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))
Exemplo n.º 7
0
    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!")