basic reg loading psm, psm4, external file
This commit is contained in:
parent
174bb14124
commit
e28c02f169
|
@ -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)
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
load s0, 1
|
||||
output sD, FF
|
|
@ -0,0 +1,2 @@
|
|||
load s0, 1
|
||||
output sD, FF
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue