basic reg loading psm, psm4, external file

This commit is contained in:
wgroeneveld 2018-11-27 16:54:36 +01:00
parent 174bb14124
commit e28c02f169
4 changed files with 36 additions and 12 deletions

View File

@ -9,31 +9,39 @@ class OpbTestAssertions():
self.register = None
def reg(self, register):
self.register = register
if not register.startswith("s"):
self.case.fail("Register name should start with 's', followed with 0-F")
self.register = int(register[1], 16)
return self
def contains(self, expected):
if self.register is None:
self.case.fail("First call reg() to assert which register to check!")
self.case.assertReg(self.jsondata, "a", int(self.register[1], 16), expected)
self.case.assertReg(self.jsondata, "a", self.register, expected)
class OpbTestCase(TestCase):
def tearDown(self):
for file in glob.glob('tmp_*'):
pass
os.remove(file)
for file in glob.glob('*.gen.psm'):
os.remove(file)
for file in glob.glob('*.log'):
os.remove(file)
for file in glob.glob('*.mem'):
os.remove(file)
for file in glob.glob('*.fmt'):
os.remove(file)
def execute_psm(self, psm):
with open("tmp_" + str(time.time()) + ".psm4", "w") as file:
file.write(psm)
r = subprocess.call("opbasm -6 -c " + file.name, shell=True)
self.assertTrue(r == 0, "Opbasm compilation failed of source: " + psm)
def execute_file(self, filename):
psm4 = "psm4" in filename
r = subprocess.call("opbasm -{} -c {}".format("6" if psm4 else "3", filename), shell=True)
self.assertTrue(r == 0, "Opbasm compilation failed of source; filename: " + filename)
try:
json_out = subprocess.check_output("opbsim -v -j -m:" + file.name.replace(".psm4", ".mem"), shell=True)
json_out = subprocess.check_output("opbsim -v -j -m:{} --{}".format(filename.replace(".psm4" if psm4 else ".psm", ".mem"), "pb6" if psm4 else "pb3"), shell=True)
except subprocess.CalledProcessError as e:
self.fail("Opbsim simulation failed with: " + '\n>>> '.join(('\n' + str(e.output)).splitlines()).lstrip())
@ -41,6 +49,11 @@ class OpbTestCase(TestCase):
self.assertTrue(json_out['termination'] == 'termNormal', 'Simulation failed with ' + json_out['termination'])
return json_out
def execute_psm(self, psm):
with open("tmp_" + str(time.time()) + ".psm4", "w") as file:
file.write(psm)
return self.execute_file(file.name)
def assertPsm(self, jsondata):
return OpbTestAssertions(jsondata, self)

View File

@ -0,0 +1,2 @@
load s0, 1
output sD, FF

View File

@ -0,0 +1,2 @@
load s0, 1
output sD, FF

View File

@ -4,10 +4,17 @@ from opbtest import OpbTestCase
class TestBasicAsm(OpbTestCase):
def test_basic_register_loading(self):
def test_basic_register_loading_form_file_psm4(self):
result = self.execute_file("basic_register_loading.psm4")
self.assertPsm(result).reg("s0").contains(1)
def test_basic_register_loading_form_file_psm(self):
result = self.execute_file("basic_register_loading.psm")
self.assertPsm(result).reg("s0").contains(1)
def test_basic_register_loading_inline(self):
psm = """load s0, 1
output sD, FF"""
result = self.execute_psm(psm)
self.assertPsm(result).reg("s0").contains(1)