def test_memFactorial(self):

        machine = IRMachine1()

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp17))
        machine.run(instructions, labels, inv_lbl, func_help)

        self.assertEqual(machine.memory[100], 40320)
    def test_incrementVariable(self):

        machine = IRMachine1()

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp18))
        machine.run(instructions, labels, inv_lbl, func_help)

        self.assertEqual(machine.memory[0], 2)
    def test_swap(self):

        machine = IRMachine1()

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp16))
        machine.run(instructions, labels, inv_lbl, func_help)

        self.assertEqual(machine.memory[50], 100)
        self.assertEqual(machine.memory[51], -1)
    def test_nestedMemCalls(self):
        machine = IRMachine1()

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp6))
        machine.run(instructions, labels, inv_lbl, func_help)

        self.assertEqual(machine.memory[10], 400)

        self.assertEqual(machine.sp, -1)
    def test_assignmentSingleFunctionCallNestedMem(self):

        machine = IRMachine1()

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp4))
        machine.run(instructions, labels, inv_lbl, func_help)

        self.assertEqual(machine.memory[50], 50)

        self.assertEqual(machine.sp, -1)
    def test_moreCondsInFunctions(self):

        machine = IRMachine1()

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp10))
        machine.run(instructions, labels, inv_lbl, func_help)

        self.assertEqual(machine.memory[100], 0)

        self.assertEqual(machine.sp, -1)
    def tests_memorySorted(self):
        machine = IRMachine1()

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp15))
        machine.run(instructions, labels, inv_lbl, func_help)

        for i in range(20, 99):
            self.assertTrue(machine.memory[i] <= machine.memory[i + 1], 'Mem loc: {}'.format(i))

        self.assertEqual(machine.sp, -1)
    def tests_memoryAccessWithVariable(self):
        machine = IRMachine1()

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp14))
        machine.run(instructions, labels, inv_lbl, func_help)

        for i in range(5, 25):
            self.assertEqual(machine.memory[i], 0)

        self.assertEqual(machine.sp, -1)
    def test_moreRecursiveFunctionsWithFiller(self):

        machine = IRMachine1()

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp9))
        machine.run(instructions, labels, inv_lbl, func_help)

        self.assertEqual(machine.memory[100], 1)

        self.assertEqual(machine.sp, -1)
    def test_palinString(self):

        machine = IRMachine1()

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp23))
        machine.run(instructions, labels, inv_lbl, func_help)

        self.assertTrue(machine.memory[20] == 0)
        self.assertTrue(machine.memory[21] == 1)

        print('hello world.')
    def test_incrementedMemory(self):

        machine = IRMachine1()

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp12))
        machine.run(instructions, labels, inv_lbl, func_help)

        for i in range(5, 100):
            self.assertEqual(machine.memory[i], i)

        self.assertEqual(machine.sp, -1)
    def test_bullshitFunctionCallsIsPrime(self):

        machine = IRMachine1()

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp5))
        machine.run(instructions, labels, inv_lbl, func_help)

        self.assertEqual(machine.memory[50], 1)
        self.assertEqual(machine.memory[51], 0)

        self.assertEqual(machine.sp, -1)
    def test_noAssignmentInFunctionsRecursive(self):

        machine = IRMachine1()

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp3))
        machine.run(instructions, labels, inv_lbl, func_help)

        self.assertEqual(machine.memory[100], 210)
        self.assertEqual(machine.memory[101], 40320)

        self.assertEqual(machine.sp, -1)
    def test_makeAscending(self):
        machine = IRMachine1()

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp20))
        machine.run(instructions, labels, inv_lbl, func_help)

        a = machine.memory[0]

        self.assertEqual(machine.memory[a - 1], 10)

        for i in range(10):
            self.assertEqual(machine.memory[a + i], i)
Exemple #15
0
    def test_incrementVariable(self):

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp18))
        lc3_conv = LC3Converter(instructions, labels, inv_lbl, func_help)

        tree, table, str_table = lc3_conv.convert()
        pure = flatten(tree)

        machine = Machine()
        machine.run(pure, table)

        self.assertEqual(machine.memory[machine.registers[SP] - 1], 2)
        self.assertEqual(machine.registers[SP], 0xF000)
    def test_basicMath(self):

        machine = IRMachine1()

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp1))
        machine.run(instructions, labels, inv_lbl, func_help)

        self.assertEqual(machine.memory[50], 1)
        self.assertEqual(machine.memory[51], 180)
        self.assertEqual(machine.memory[52], 0)
        self.assertEqual(machine.memory[53], 1)

        self.assertEqual(machine.sp, -1)
Exemple #17
0
    def test_palinString(self):

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp23))
        lc3_conv = LC3Converter(instructions, labels, inv_lbl, func_help)

        tree, table, str_table = lc3_conv.convert()
        pure = flatten(tree)

        machine = Machine()
        machine.run(pure, table, str_table)

        self.assertEqual(machine.memory[20], 0)
        self.assertEqual(machine.memory[21], 1)
Exemple #18
0
    def tests_memoryAccessWithVariable(self):
        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp14))
        lc3_conv = LC3Converter(instructions, labels, inv_lbl, func_help)

        tree, table, str_table = lc3_conv.convert()
        pure = flatten(tree)

        machine = Machine()
        machine.run(pure, table)

        for i in range(5, 25):
            self.assertEqual(machine.memory[i], 0, i)

        self.assertEqual(machine.registers[SP], 0xF000)
Exemple #19
0
    def test_memFactorial(self):

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp17))
        lc3_conv = LC3Converter(instructions, labels, inv_lbl, func_help)

        tree, table, str_table = lc3_conv.convert()
        pure = flatten(tree)

        machine = Machine()
        machine.run(pure, table)

        self.assertEqual(machine.memory[100], 40320)

        self.assertEqual(machine.registers[SP], 0xF000)
Exemple #20
0
    def test_moreRecursiveFunctionsWithFiller(self):

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp9))
        lc3_conv = LC3Converter(instructions, labels, inv_lbl, func_help)

        tree, table, str_table = lc3_conv.convert()
        pure = flatten(tree)

        machine = Machine()
        machine.run(pure, table)

        self.assertEqual(machine.memory[100], 1)

        self.assertEqual(machine.registers[SP], 0xF000)
Exemple #21
0
    def test_assignmentSingleFunctionCallNestedMem(self):

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp4))
        lc3_conv = LC3Converter(instructions, labels, inv_lbl, func_help)

        tree, table, str_table = lc3_conv.convert()
        pure = flatten(tree)

        machine = Machine()
        machine.run(pure, table)

        self.assertEqual(machine.memory[50], 50)

        self.assertEqual(machine.registers[SP], 0xF000)
Exemple #22
0
    def tests_memorySorted(self):
        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp15))
        lc3_conv = LC3Converter(instructions, labels, inv_lbl, func_help)

        tree, table, str_table = lc3_conv.convert()
        pure = flatten(tree)

        machine = Machine()
        machine.run(pure, table)

        for i in range(20, 99):
            self.assertTrue(machine.memory[i] <= machine.memory[i + 1],
                            'Mem loc: {}'.format(i))

        self.assertEqual(machine.registers[SP], 0xF000)
Exemple #23
0
    def test_bullshitFunctionCallsIsPrime(self):

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp5))
        lc3_conv = LC3Converter(instructions, labels, inv_lbl, func_help)

        tree, table, str_table = lc3_conv.convert()
        pure = flatten(tree)

        machine = Machine()
        machine.run(pure, table)

        self.assertEqual(machine.memory[50], 1)
        self.assertEqual(machine.memory[51], 0)

        self.assertEqual(machine.registers[SP], 0xF000)
Exemple #24
0
    def test_noAssignmentInFunctionsRecursive(self):

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp3))
        lc3_conv = LC3Converter(instructions, labels, inv_lbl, func_help)

        tree, table, str_table = lc3_conv.convert()
        pure = flatten(tree)

        machine = Machine()

        machine.run(pure, table)

        self.assertEqual(machine.memory[100], 210)
        self.assertEqual(machine.memory[101], 40320)

        self.assertEqual(machine.registers[SP], 0xF000)
Exemple #25
0
    def test_makeAscending(self):
        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp20))
        lc3_conv = LC3Converter(instructions, labels, inv_lbl, func_help)

        tree, table, str_table = lc3_conv.convert()
        pure = flatten(tree)

        machine = Machine()
        machine.run(pure, table)

        ptr_a = machine.memory[100]

        self.assertEqual(machine.memory[ptr_a - 1], 10)

        for i in range(10):
            self.assertEqual(machine.memory[ptr_a + i], i)
Exemple #26
0
    def test_memString2D(self):
        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp28))
        lc3_conv = LC3Converter(instructions, labels, inv_lbl, func_help)

        tree, table, str_table = lc3_conv.convert()
        pure = flatten(tree)

        machine = Machine()
        machine.run(pure, table, str_table)

        for i in range(5):
            if i % 2 == 0:
                for j in range(5):
                    self.assertEqual(machine.memory[5 + i * 5 + j], ord('a'))
            else:
                for j in range(5):
                    self.assertEqual(machine.memory[5 + i * 5 + j], ord('t'))
Exemple #27
0
    def test_memArrAssign(self):
        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp26))
        lc3_conv = LC3Converter(instructions, labels, inv_lbl, func_help)

        tree, table, str_table = lc3_conv.convert()
        pure = flatten(tree)

        machine = Machine()
        machine.run(pure, table)

        arr = machine.memory[100]

        # machine.print_memory(0, 120)
        self.assertEqual(machine.memory[arr - 1], 20)

        for i in range(0, 20):
            self.assertTrue(machine.memory[arr + i] == i, i)
Exemple #28
0
    def test_basicMath2(self):

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp2))
        lc3_conv = LC3Converter(instructions, labels, inv_lbl, func_help)

        tree, table, str_table = lc3_conv.convert()
        pure = flatten(tree)

        machine = Machine()

        machine.run(pure, table)

        self.assertEqual(machine.memory[50], -90)
        self.assertEqual(machine.memory[51], 1700)
        self.assertEqual(machine.memory[52], 80)
        self.assertEqual(machine.memory[53], 1700)
        self.assertEqual(machine.memory[54], 1)

        self.assertEqual(machine.registers[SP], 0xF000)
    def test_mergeSort(self):

        machine = IRMachine1()

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp22))
        machine.run(instructions, labels, inv_lbl, func_help)

        arr = machine.memory[0]

        # machine.print_memory(0, 120)

        self.assertEqual(machine.memory[arr - 1], 100)


        for i in range(0, 99):
            self.assertTrue(machine.memory[arr + i] <= machine.memory[arr + i + 1],
                'Mem loc: {}, seed: {}'.format(arr + i, machine.seed))

        self.assertEqual(machine.sp, -1)
Exemple #30
0
    def test_mergeSort(self):

        instructions, labels, inv_lbl, func_help = parse(tokenize(sp.samp22))
        lc3_conv = LC3Converter(instructions, labels, inv_lbl, func_help)

        tree, table, str_table = lc3_conv.convert()
        pure = flatten(tree)

        machine = Machine()
        machine.run(pure, table)

        arr = machine.memory[150]

        # machine.print_memory(0, 120)
        self.assertEqual(machine.memory[arr - 1], 100)

        for i in range(0, 99):
            self.assertTrue(
                machine.memory[arr + i] <= machine.memory[arr + i + 1],
                'Mem loc: {}, seed: {}'.format(arr + i, machine.seed))

        self.assertEqual(machine.registers[SP], 0xF000)