From ce6b85a5e701e384838254dd319b5a21a0ba98d3 Mon Sep 17 00:00:00 2001 From: Starfflame Date: Wed, 19 May 2021 00:41:01 -0500 Subject: [PATCH] Add busted tests --- .gitignore | 1 + tests.lua | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 tests.lua diff --git a/.gitignore b/.gitignore index 422d884..a9711c7 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ *.nix *.lua !*tlconfig.lua +!*tests.lua diff --git a/tests.lua b/tests.lua new file mode 100644 index 0000000..8368156 --- /dev/null +++ b/tests.lua @@ -0,0 +1,94 @@ +local istream = require("InputStream") +local ds = require("DataStructures") +local Stack, Dictionary, WordInfo, Environment = ds.Stack, ds.Dictionary, ds.WordInfo, ds.Environment + + +function pushThree(s) + s:push(1) + s:push(2) + s:push(3) +end + + +describe("Stack Tests", function() + local stack = Stack:new() + it("fails on stack underflow", function() + stack = Stack:new() + assert.has.errors(function() + stack:pop() + end) + end) + it("pushes three items properly", function() + stack = Stack:new() + pushThree(stack) + assert.are.same(stack.contents, {1,2,3}) + end) + it("pops three items properly", function() + stack = Stack:new() + pushThree(stack) + assert.are.same(stack.contents, {1,2,3}) + assert(3 == stack:pop()) + assert.are.same(stack.contents, {1,2}) + assert(2 == stack:pop()) + assert.are.same(stack.contents, {1}) + assert(1 == stack:pop()) + assert.are.same(stack.contents, {}) + assert.has.errors(function() + stack:pop() + end) + end) + it("PUSH 1, 2, 3, POP = 3, PUSH 4 = {1,2,4}", function() + stack = Stack:new() + pushThree(stack) + assert(3 == stack:pop()) + assert.are.same(stack.contents, {1, 2}) + stack:push(4) + assert.are.same(stack.contents, {1, 2, 4}) + end) +end) + +local function dummyInput() + return "1234567890" +end +describe("InputStream tests", function() + local input = istream:new(dummyInput) + it("gets a new refill accurately", function() + input = istream:new() + input:setRefill(dummyInput) + assert.are.equal(input.refill, dummyInput) + end) + it("reads text properly", function() + input = istream:new(dummyInput) + input:setRefill(dummyInput) + local inputString = dummyInput() + for i = 0, 100 do + local j = i % #inputString + 1 + assert.are.same(inputString:sub(j, j), input:advanceOffset()) + end + end) +end) +describe("WordInfo tests", function() + local Environment = ds.Environment + local WordInfo = ds.WordInfo + it("creates and doesn't crash", function() + local env = Environment:new() + wi = WordInfo:new(function(env) end, false) + end) +end) + + +describe("Dictionary tests", function() + local Dictionary = ds.Dictionary + local WordInfo = ds.WordInfo + local Environment = ds.Environment + it("defines without breaking",function() + local env = Environment:new() + local dict = Dictionary:new() + local wi = WordInfo:new(function(env) end, false) + + dict:define("TEST",wi) + end) +end) + + +