beam-boot / tests /test_hf_decoder_cpu.py
StarAtNyte1's picture
Publish Beam Boot / Super Beam source
324ecd2 verified
Raw History Blame Contribute Delete
1.07 kB
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)