diff options
author | Daniel Silverstone <dsilvers@digital-scurf.org> | 2012-08-23 22:48:00 +0100 |
---|---|---|
committer | Daniel Silverstone <dsilvers@digital-scurf.org> | 2012-08-23 22:48:00 +0100 |
commit | 8797eb9b4b15729396ea049f8459e351d3093728 (patch) | |
tree | fabdf0ed0811dd64a767be0e9f0591a836d2f429 /test | |
parent | e81590288f5aa133efbf8e53e3366ed715f1d7fd (diff) | |
download | clod-8797eb9b4b15729396ea049f8459e351d3093728.tar.gz |
TEST: Tests to cover 100% of clod.lua
Diffstat (limited to 'test')
-rw-r--r-- | test/test-clod.lua | 147 |
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) |