aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.build.yml2
-rw-r--r--advtrains/spec/speed_spec.lua2
-rw-r--r--advtrains_interlocking/spec/ars_spec.lua67
3 files changed, 70 insertions, 1 deletions
diff --git a/.build.yml b/.build.yml
index 89589b9..9627b14 100644
--- a/.build.yml
+++ b/.build.yml
@@ -31,6 +31,8 @@ tasks:
- run_unit_tests : |
cd advtrains/advtrains
busted
+ cd ../advtrains_interlocking
+ busted
- activate_test_env: |
cd advtrains
git merge --no-commit origin/luaatcdebug
diff --git a/advtrains/spec/speed_spec.lua b/advtrains/spec/speed_spec.lua
index 0f0365f..97f8ffa 100644
--- a/advtrains/spec/speed_spec.lua
+++ b/advtrains/spec/speed_spec.lua
@@ -23,7 +23,7 @@ describe("Arithmetic functions on speed restrictions", function()
assert.is_false(speed.lessp(-1, math.random()))
end)
it("should handle nil", function()
- assert.is_false(speed.greaterp(nil, math.random()))
+ assert.is_true(speed.greaterp(nil, math.random()))
end)
it("should handle mixed nil and -1", function()
assert.is_true(speed.equalp(nil, -1))
diff --git a/advtrains_interlocking/spec/ars_spec.lua b/advtrains_interlocking/spec/ars_spec.lua
new file mode 100644
index 0000000..085dbcb
--- /dev/null
+++ b/advtrains_interlocking/spec/ars_spec.lua
@@ -0,0 +1,67 @@
+-- test the serialization function
+
+
+package.path = "../?.lua;" .. package.path
+
+
+
+
+_G.advtrains = {}
+_G.advtrains.interlocking = {}
+
+require("ars")
+
+local arstb = {{ ln="Foo"}, {c="Bar"}, {n=true, rc="Boo"}}
+local arsdef = {{ ln="Foo"}, {c="Bar"}, {rc="Boo"}, default=true}
+local arstr = [[LN Foo
+#Bar
+!RC Boo]]
+local defstr = [[*
+LN Foo
+#Bar
+RC Boo]]
+il = _G.advtrains.interlocking
+
+describe("ars_to_text", function ()
+ it("read table", function ()
+ assert.equals(il.ars_to_text(arstb),arstr)
+ end)
+ it("reads back and forth", function ()
+ assert.equals(il.ars_to_text(il.text_to_ars(arstr)),arstr)
+ end)
+ it("handles default routes properly", function ()
+ assert.equals(il.ars_to_text(arsdef),defstr)
+ end)
+end)
+
+describe("text_to_ars", function ()
+ it("writes table", function()
+ assert.same(il.text_to_ars(arstr),arstb)
+ end)
+ it("handles default routes properly", function ()
+ assert.same(il.text_to_ars(defstr),arsdef)
+ end)
+end)
+
+train1 = {}
+train2 = {}
+train3 = {}
+train1.line = "Foo"
+train1.routingcode = "Boo"
+train2.line= "Bar"
+train2.routingcode = "NotBoo NotBoo"
+train3.routingcode = "Foo Boo Moo Zoo"
+
+describe("check_rule_match", function ()
+ it("matches rules correctly", function()
+ assert.equals(il.ars_check_rule_match(arstb,train1),1)
+ assert.equals(il.ars_check_rule_match(arsdef,train2),nil)
+ end)
+ it("matches negative rules", function()
+ assert.equals(il.ars_check_rule_match(arstb,train2),3)
+ assert.equals(il.ars_check_rule_match(arstb,train3),nil)
+ end)
+ it("matches RC in a list correctly", function()
+ assert.equals(il.ars_check_rule_match(arsdef,train3),3)
+ end)
+end)