def test_pass_valid_int_machine(self):
        file_name = "tests/mock_machine/add.o"
        machine_program = Skynet(file_name)
        machine_program.run()

        lookup_buffer = machine_program.buffer

        self.assertEqual(lookup_buffer[0], 24)
    def test_pass_valid_real_machine(self):
        file_name = "tests/mock_machine/int_real.o"
        machine_program = Skynet(file_name)
        machine_program.run()

        lookup_buffer = machine_program.buffer
        self.assertEqual(len(lookup_buffer), 2)
        self.assertEqual(lookup_buffer[0], 24)
        self.assertEqual(lookup_buffer[1], 7.75)
    def test_pass_valid_real_machine(self):
        file_name = "tests/mock_machine/machine.o"
        machine_program = Skynet(file_name)
        machine_program.run()

        lookup_buffer = machine_program.buffer
        self.assertEqual(len(lookup_buffer), 5)
        self.assertEqual(lookup_buffer[0], 24)
        self.assertEqual(lookup_buffer[1], 7.75)
        self.assertEqual(lookup_buffer[2], "a")
        self.assertEqual(lookup_buffer[3], False)
        self.assertEqual(lookup_buffer[4], True)
    image_vector[-1] = 1

    for i in range(28):
        for j in range(28):
            r, g, b = image_data.getpixel((j, i))
            image_vector[28 * i + j] = (r + g + b) / 3

    recognized_text.set(str(sk.recognize([image_vector])[0][0]))


def reset_canvas():
    drawing_area.delete('all')
    drawing_area.create_rectangle(0, 0, width + 10, height + 10, fill='black')


sk = Skynet()
sk.load_engine_matrix()

window = tk.Frame()
window.master.title("Digit recognition")
window.grid()

drawing_area = tk.Canvas(window, width=width, height=height)
drawing_area.grid(row=0, column=0)
reset_canvas()

recognized_text = tk.StringVar()
label = tk.Label(window, textvariable=recognized_text)
label.grid(row=0, column=1)

recognize_button = tk.Button(window, text="Recognize", command=recognize)
def main():
    machine_program = Skynet(args.filename, debug=args.debug)

    machine_program.run()
    sys.exit(0)