mock replace calls

This commit is contained in:
wgroeneveld 2018-11-28 15:11:07 +01:00
parent d8e60dba00
commit a7a9c9286c
3 changed files with 47 additions and 0 deletions

View File

@ -3,6 +3,7 @@ class OpbTestMockable():
self.case = case
self.filename = filename
self.prepender = []
self.replacers = {}
self.inputs = {}
self.proctotest = ""
self.appender = ["\nopbtestquitfn: output sD, FF\n"]
@ -18,6 +19,13 @@ class OpbTestMockable():
self.prepender.append("load " + key + ", " + str(val) + "\n")
return self
def replace(self, statement1, statement2):
self.replacers[statement1] = statement2
return self
def mockproc(self, procname):
return self.replace("call " + procname, "load s0, s0")
def mockinput(self, port, value):
self.inputs[port] = value
return self
@ -62,10 +70,24 @@ class OpbTestMockable():
newdata.append(line)
return newdata
def setupreplaces(data):
newdata = []
for line in data:
found = False
for key, value in self.replacers.items():
if line.upper().replace(" ", "").startswith(key.upper().replace(" ", "")):
newdata.append(value)
found = True
if found is False:
newdata.append(line)
return newdata
if len(self.proctotest) > 0:
data = setupproc(data)
if len(self.inputs) > 0:
data = setupinputs(data)
if len(self.replacers) > 0:
data = setupreplaces(data)
firstjump = findlinebetween(data, "jump", "jump")

9
test/mocks.psm4 Normal file
View File

@ -0,0 +1,9 @@
jump main
proc myproc(s1 is bla) {
load s0, 11
}
main:
call myproc
output sD, FF

16
test/test_mocks.py Normal file
View File

@ -0,0 +1,16 @@
from opbtest import OpbTestCase
class TestMocks(OpbTestCase):
def test_mockproc_replaces_call_statements_with_dummies(self):
assert_that = self.load_file("mocks.psm4").mockproc("myproc").execute()
assert_that.reg("s0").contains(0)
def test_replace_replaces_statement_with_given(self):
assert_that = self.load_file("mocks.psm4").replace("load s0, 11", "load s0, 3").execute()
assert_that.reg("s0").contains(3)
def test_do_not_replace_anything(self):
assert_that = self.load_file("mocks.psm4").execute()
assert_that.reg("s0").contains(11)