summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2012-08-23 22:48:00 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2012-08-23 22:48:00 +0100
commit8797eb9b4b15729396ea049f8459e351d3093728 (patch)
treefabdf0ed0811dd64a767be0e9f0591a836d2f429
parente81590288f5aa133efbf8e53e3366ed715f1d7fd (diff)
downloadclod-8797eb9b4b15729396ea049f8459e351d3093728.tar.gz
TEST: Tests to cover 100% of clod.lua
-rw-r--r--test/test-clod.lua147
1 files changed, 147 insertions, 0 deletions
diff --git a/test/test-clod.lua b/test/test-clod.lua
index b453dba..d64587c 100644
--- a/test/test-clod.lua
+++ b/test/test-clod.lua
@@ -34,6 +34,153 @@ function suite.test_parse_empty()
local conf = assert(clod.parse(""))
end
+function suite.test_parse_error()
+ local conf, err = clod.parse("foo=")
+ assert(not conf)
+end
+
+function suite.test_runtime_error()
+ local conf, err = clod.parse("foo {}")
+ assert(not conf)
+end
+
+function suite.test_runtime_error2()
+ local conf, err = clod.parse("foo(function()end)")
+ assert(not conf)
+end
+
+function suite.test_runtime_error3()
+ local conf, err = clod.parse("foo = {}")
+ assert(not conf)
+end
+
+function suite.test_runtime_error3()
+ local conf, err = clod.parse("foo = function() end")
+ assert(not conf)
+end
+
+function suite.test_parse_simple_string()
+ local conf = assert(clod.parse("test 'any'"))
+ assert(conf.settings.test == "any")
+end
+
+function suite.test_parse_simple_string_assign()
+ local conf = assert(clod.parse("test = 'any'"))
+ assert(conf.settings.test == "any")
+end
+
+function suite.test_parse_dotted_key()
+ local conf = assert(clod.parse("one.two 'three'"))
+ assert(conf.settings.one.two == "three")
+end
+
+function suite.test_blank_lines()
+ local conf = assert(clod.parse("a 'b'\n\nc 'd'"))
+ assert(conf.settings.a == "b")
+ assert(conf.settings.c == "d")
+end
+
+function suite.one_line_serialise()
+ local input = 'foo.bar "baz"\n'
+ local conf = assert(clod.parse(input))
+ assert(conf:serialise() == input)
+end
+
+function suite.one_line_serialise_number()
+ local input = 'foo.bar = 5\n'
+ local conf = assert(clod.parse(input))
+ assert(conf:serialise() == input)
+end
+
+function suite.one_line_serialise_boolean_true()
+ local input = 'foo.bar = true\n'
+ local conf = assert(clod.parse(input))
+ assert(conf:serialise() == input)
+end
+
+function suite.one_line_serialise_boolean_false()
+ local input = 'foo.bar = false\n'
+ local conf = assert(clod.parse(input))
+ assert(conf:serialise() == input)
+end
+
+function suite.three_line_serialise()
+ local input = 'foo.bar "baz"\n\njeff "cake"\n'
+ local conf = assert(clod.parse(input))
+ assert(conf:serialise() == input)
+end
+
+function suite.set_extant_value()
+ local conf = assert(clod.parse("foo 'bar'"))
+ conf.settings.foo = "baz"
+ assert(conf:serialise() == 'foo "baz"\n')
+end
+
+function suite.set_dotted_extant_value()
+ local conf = assert(clod.parse("foo.bar 'bar'"))
+ conf.settings.foo.bar = "baz"
+ assert(conf:serialise() == 'foo.bar "baz"\n')
+end
+
+function suite.bad_set_extant_value()
+ local conf = assert(clod.parse("foo 'bar'"))
+ assert(not pcall(function()conf.settings.foo = {}end))
+end
+
+function suite.clear_extant_entry()
+ local conf = assert(clod.parse("foo 'br'"))
+ conf.settings.foo = nil
+ assert(conf:serialise() == "")
+end
+
+function suite.clear_extant_entry_mid_gap()
+ local conf = assert(clod.parse("foo 'br'\n\nbar 'ba'\n\nwibble 'wobble'\n"))
+ conf.settings.bar = nil
+ assert(conf:serialise() == 'foo "br"\n\nwibble "wobble"\n')
+end
+
+function suite.clear_extant_entry_last_one()
+ local conf = assert(clod.parse("foo 'br'\n\nbar 'ba'\n\nwibble 'wobble'\n"))
+ conf.settings.wibble = nil
+ assert(conf:serialise() == 'foo "br"\n\nbar "ba"\n')
+end
+
+function suite.insert_into_blank()
+ local conf = assert(clod.parse(""))
+ conf.settings.foo = "bar"
+ assert(conf:serialise() == 'foo "bar"\n')
+end
+
+function suite.insert_into_blank_two_similar()
+ local conf = assert(clod.parse(""))
+ conf.settings["person.name"] = "Lars"
+ conf.settings["person.age"] = 42
+ assert(conf:serialise() == 'person.name "Lars"\nperson.age = 42\n')
+end
+
+function suite.insert_into_blank_two_dissimilar()
+ local conf = assert(clod.parse(""))
+ conf.settings["person.name"] = "Lars"
+ conf.settings["cat.age"] = 42
+ assert(conf:serialise() == 'person.name "Lars"\n\ncat.age = 42\n')
+end
+
+function suite.insert_into_blank_two_similar_one_dissimilar()
+ local conf = assert(clod.parse(""))
+ conf.settings["person.name"] = "Lars"
+ conf.settings["person.age"] = 42
+ conf.settings["pants.style"] = "Y-Front"
+ assert(conf:serialise() == 'person.name "Lars"\nperson.age = 42\n\npants.style "Y-Front"\n')
+end
+
+function suite.insert_into_blank_two_similar_one_dissimilar_variant()
+ local conf = assert(clod.parse(""))
+ conf.settings["person.name"] = "Lars"
+ conf.settings["pants.style"] = "Y-Front"
+ conf.settings["person.age"] = 42
+ assert(conf:serialise() == 'person.name "Lars"\nperson.age = 42\n\npants.style "Y-Front"\n')
+end
+
local count_ok = 0
for _, testname in ipairs(testnames) do
-- print("Run: " .. testname)