Exemplo n.º 1
0
 def test_print(self):
     # Hello world from https://en.wikipedia.org/wiki/Brainfuck
     output = StringIO.StringIO()
     run(
         "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>"
         "++.<<+++++++++++++++.>.+++.------.--------.>+.>.",
         stdout=output)
     self.assertEquals(output.getvalue(), "Hello World!\n")
    def test_single_assignment(self):
        emit_output = StringIO.StringIO()
        run_output = StringIO.StringIO()
        emitter = Emitter(stdout=emit_output)
        python = """v1 = "a" """
        builder = BFBuild(python, emit=emitter).emit_bf()

        run(emit_output.getvalue(), stdout=run_output)
    def test_variable_to_variable(self):
        emit_output = StringIO.StringIO()
        run_output = StringIO.StringIO()
        emitter = Emitter(stdout=emit_output)
        python = """v1 = "a"\nv2 = v1 """
        builder = BFBuild(python, emit=emitter).emit_bf()

        run(emit_output.getvalue(), stdout=run_output)
Exemplo n.º 4
0
    def test_underflow(self):
        memory_space = []
        run("-" * 127, memory=memory_space)
        self.assertEquals(memory_space[0], -127)

        memory_space = []
        run("-" * 128, memory=memory_space)
        self.assertEquals(memory_space[0], 127)
Exemplo n.º 5
0
 def test_if_true(self):
     emit_output = StringIO.StringIO()
     run_output = StringIO.StringIO()
     emitter = Emitter(stdout=emit_output)
     python = """if True:\n    print "OK" """
     builder = BFBuild(python, emit=emitter).emit_bf()
     run(emit_output.getvalue(), stdout=run_output)
     self.assertEqual(run_output.getvalue(), "OK\n")
Exemplo n.º 6
0
 def test_if_else_match_else(self):
     emit_output = StringIO.StringIO()
     run_output = StringIO.StringIO()
     emitter = Emitter(stdout=emit_output)
     python = ("if False:\n    print 'IF'\n" "else:\n    print 'ELSE'\n")
     builder = BFBuild(python, emit=emitter).emit_bf()
     run(emit_output.getvalue(), stdout=run_output)
     self.assertEqual(run_output.getvalue(), "ELSE\n")
    def test_setting_integer(self):
        emit_output = StringIO.StringIO()
        run_output = StringIO.StringIO()
        emitter = Emitter(stdout=emit_output)
        python = """v1 = 57 """
        builder = BFBuild(python, emit=emitter).emit_bf()

        memory_space = []
        run(emit_output.getvalue(), stdout=run_output)
Exemplo n.º 8
0
    def test_single_static_output(self):
        emit_output = StringIO.StringIO()
        run_output = StringIO.StringIO()
        emitter = Emitter(stdout=emit_output)
        python = """print "Hello" """
        builder = BFBuild(python, emit=emitter).emit_bf()

        run(emit_output.getvalue(), stdout=run_output)

        self.assertEqual(run_output.getvalue(), "Hello\n")
Exemplo n.º 9
0
    def test_loop(self):
        memory_space = []
        run("+++[->+<]", memory=memory_space)
        self.assertEqual(memory_space[0], 0)
        self.assertEqual(memory_space[1], 3)

        memory_space = []
        run(">++>+>+++>++[[-]<]", memory=memory_space)
        self.assertEqual(memory_space[0], 0)
        self.assertEqual(memory_space[1], 0)
        self.assertEqual(memory_space[2], 0)
        self.assertEqual(memory_space[3], 0)
        self.assertEqual(memory_space[4], 0)
Exemplo n.º 10
0
    def test_read_input(self):
        class Input(object):
            index = -1

            def get_input(self):
                self.index += 1
                return "Hello"[self.index]

        memory_space = []
        run(",>,>,>,>,", input_reader=Input(), memory=memory_space)
        self.assertEqual(chr(memory_space[0]), "H")
        self.assertEqual(chr(memory_space[1]), "e")
        self.assertEqual(chr(memory_space[2]), "l")
        self.assertEqual(chr(memory_space[3]), "l")
        self.assertEqual(chr(memory_space[4]), "o")
Exemplo n.º 11
0
    def test_difference_in_if(self):
        emit_output = StringIO.StringIO()
        run_output = StringIO.StringIO()
        emitter = Emitter(stdout=emit_output)
        python = """if True != False:\n    print "OK" """
        builder = BFBuild(python, emit=emitter).emit_bf()
        run(emit_output.getvalue(), stdout=run_output)
        self.assertEquals("OK\n", run_output.getvalue())

        emit_output = StringIO.StringIO()
        run_output = StringIO.StringIO()
        emitter = Emitter(stdout=emit_output)
        python = """if True != True:\n    print "OK" """
        builder = BFBuild(python, emit=emitter).emit_bf()
        run(emit_output.getvalue(), stdout=run_output)
        self.assertEquals("", run_output.getvalue())
Exemplo n.º 12
0
    def test_equality_true_false(self):
        emit_output = StringIO.StringIO()
        run_output = StringIO.StringIO()
        emitter = Emitter(stdout=emit_output)
        python = """foo = True == True\nprint foo"""
        builder = BFBuild(python, emit=emitter).emit_bf()
        memory_space = []
        run(emit_output.getvalue(), stdout=run_output, memory=memory_space)
        self.assertEquals(1, ord(run_output.getvalue()[0]))

        emit_output = StringIO.StringIO()
        run_output = StringIO.StringIO()
        emitter = Emitter(stdout=emit_output)
        python = """foo = True == False\nprint foo"""
        builder = BFBuild(python, emit=emitter).emit_bf()
        memory_space = []
        run(emit_output.getvalue(), stdout=run_output, memory=memory_space)
        self.assertEquals(0, ord(run_output.getvalue()[0]))
Exemplo n.º 13
0
    def test_memory(self):
        memory_space = []
        run("", memory=memory_space)
        self.assertEqual(memory_space[0], 0)

        memory_space = []
        run("++", memory=memory_space)
        self.assertEqual(memory_space[0], 2)

        memory_space = []
        run("++-", memory=memory_space)
        self.assertEqual(memory_space[0], 1)
Exemplo n.º 14
0
    def test_pointer(self):
        memory_space = []
        run(">-", memory=memory_space)
        self.assertEqual(memory_space[0], 0)
        self.assertEqual(memory_space[1], -1)

        memory_space = []
        run(">>>+", memory=memory_space)
        self.assertEqual(memory_space[0], 0)
        self.assertEqual(memory_space[1], 0)
        self.assertEqual(memory_space[2], 0)
        self.assertEqual(memory_space[3], 1)

        memory_space = []
        run(">>><<+", memory=memory_space)
        self.assertEqual(memory_space[0], 0)
        self.assertEqual(memory_space[1], 1)
        self.assertEqual(memory_space[2], 0)
        self.assertEqual(memory_space[3], 0)
Exemplo n.º 15
0
 def test_skipped_loop(self):
     memory_space = []
     run("[+++[]++++]>+", memory=memory_space)
     self.assertEquals(memory_space[0], 0)
     self.assertEquals(memory_space[1], 1)