diff --git a/tests.lua b/tests.lua index f23b4b6..e42b037 100644 --- a/tests.lua +++ b/tests.lua @@ -137,7 +137,7 @@ function buildEnvironment(testString) return testEnv end -local twoRandom = function() return math.random(100000), math.random(100000) end +local twoRandom = function() return math.random(-100000, 100000), math.random(-100000, 100000) end describe("Interpreter tests", function() @@ -186,7 +186,7 @@ describe("Interpreter tests", function() end) it("can evaluate a arithmetic expression with multiple operations", function() for i = 1, 1000 do - operands = {math.random(100000), math.random(100000), math.random(100000), math.random(100000)} + operands = {math.random(-100000,100000), math.random(-100000,100000), math.random(-100000,100000), math.random(-100000,100000)} local operations = {math.random(4), math.random(4), math.random(4)} local testString = ""..operands[1] local expectedResult = operands[1] @@ -211,6 +211,27 @@ describe("Interpreter tests", function() end end) end) + describe("Core word tests", function() + describe("DUP tests", function() + it("DUPs the top item of a stack with one item on it.", function() + local testEnv = buildEnvironment("1 DUP") + interpreters.start(testEnv) + assert.are.same(1, testEnv.activeDataStack.contents[2]) + end) + it("DUPs the top item of a stack with random quantities of random numbers on it.", function() + for i = 1, 1000 do + local stack_depth = math.random(100) + local stack_top = 0 + for j = 1, stack_depth do + stack_top = math.random(-100000,100000) + testEnv.activeDataStack:push(stack_top) + end + local testEnv = buildEnvironment(stack_top.." DUP") + assert.are.same(stack_top, testEnv.activeDataStack.contents[j+1]) + end + end) + end) + end) end)