From 8797eb9b4b15729396ea049f8459e351d3093728 Mon Sep 17 00:00:00 2001 From: Daniel Silverstone Date: Thu, 23 Aug 2012 22:48:00 +0100 Subject: TEST: Tests to cover 100% of clod.lua --- test/test-clod.lua | 147 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) 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) -- cgit v1.2.1