File size: 1,067 Bytes
324ecd2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import unittest
from beamboot.hf_decoder_cpu import DecoderCPU
from beamboot.large_cpu import LargeCPU, LargeRuntime


class DecoderCPUTests(unittest.TestCase):
    def test_transition_in_stock_decoder(self):
        program = [('LDI', 7), ('STORE', 3), ('LDI', 2), ('ADDM', 3),
                   ('STORE', 4), ('LOAD', 3), ('OUT', 0), ('LOAD', 4),
                   ('OUT', 0), ('SUB', 9), ('JZ', 12), ('HALT', 0), ('HALT', 0)]
        actual = DecoderCPU(program)
        ref = LargeRuntime(LargeCPU(program))
        for _ in range(30):
            got, expected = actual.step(), ref.step()
            self.assertEqual(got, expected)
            if got.halt: break
        self.assertTrue(actual.halted)

    def test_monitor_boots_and_adds(self):
        from beamboot.os import OperatingMonitor
        machine = OperatingMonitor(backend='decoder')
        self.assertEqual(machine.boot(), 'BEAM>\n')
        self.assertEqual(machine.version(), 'BEAMBOOT 0.1\n')
        self.assertEqual(machine.add(7, 8), 15)
        self.assertEqual(machine.add(15, 3), 2)