1
2require "yaml"
3require "lunit"
4
5lunit.import "all"
6
7local testcase = lunit.TestCase("LuaYAML Testcases")
8
9function testcase.test_load()
10	assert_error(function() yaml.load() end)
11	assert_nil(yaml.load("--- "))
12	assert_true(yaml.load("--- true"))
13	assert_false(yaml.load("--- false"))
14	assert_equal(10, yaml.load("--- 10"))
15	assert_equal(10.3321, yaml.load("--- 10.3321"))
16	local t = yaml.load("--- \n- 5\n- 10\n- 15")
17	assert_equal(5, t[1])
18	assert_equal(10, t[2])
19	assert_equal(15, t[3])
20	local t = yaml.load("--- \n- one\n- two\n- three")
21	assert_equal("one", t[1])
22	assert_equal("two", t[2])
23	assert_equal("three", t[3])
24	local t = yaml.load("--- \nthree: 15\ntwo: 10\none: 5")
25	assert_equal(5, t.one)
26	assert_equal(10, t.two)
27	assert_equal(15, t.three)
28	local t = yaml.load("--- \nints: \n  - 1\n  - 2\n  - 3\nmaps: \n  three: 3\n  two: 2\n  one: 1\nstrings: \n  - one\n  - two\n  - three")
29	assert_equal(1, t.ints[1])
30	assert_equal(2, t.ints[2])
31	assert_equal(3, t.ints[3])
32	assert_equal(1, t.maps.one)
33	assert_equal(2, t.maps.two)
34	assert_equal(3, t.maps.three)
35	assert_equal("one", t.strings[1])
36	assert_equal("two", t.strings[2])
37	assert_equal("three", t.strings[3])
38end
39
40function testcase.test_dump()
41	assert_equal("--- \n", yaml.dump(nil))
42	assert_equal("--- hey\n", yaml.dump("hey"))
43	assert_equal("--- 5\n", yaml.dump(5))
44	assert_equal("--- 5.9991\n", yaml.dump(5.9991))
45	assert_equal("--- true\n", yaml.dump(true))
46	assert_equal("--- false\n", yaml.dump(false))
47	assert_equal("--- \n- 5\n- 6\n- 7\n", yaml.dump({5, 6, 7}))
48
49	local str = "--- \n- \n  - 1\n  - 2\n  - 3\n- \n  - 6\n  - 7\n  - 8\n"
50	assert_equal(str, yaml.dump({{1, 2, 3}, {6, 7, 8}}))
51	local str = "--- \n- \n  - 1\n  - 2\n  - 3\n- \n  - one\n  - two\n  - three\n"
52	assert_equal(str, yaml.dump({{1, 2, 3}, {"one", "two", "three"}}))
53
54	local str = "--- \none: 1\nthree: 3\ntwo: 2\n"
55	assert_equal(str, yaml.dump({one=1, two=2, three=3}))
56end
57
58function testcase.test_file()
59	local file = "test.dump"
60
61	local f = assert(io.open(file, "w"))
62	local obj = {5, 6, "hello"}
63
64	yaml.dump(obj, f)
65	f:close()
66
67	local obj2, err = yaml.load_file(file)
68	assert_nil(err)
69	assert_equal(5, obj2[1])
70	assert_equal(6, obj2[2])
71	assert_equal("hello", obj2[3])
72
73	yaml.dump_file(obj, file)
74	local obj2, err = yaml.load_file(file)
75	assert_nil(err)
76	assert_equal(5, obj2[1])
77	assert_equal(6, obj2[2])
78	assert_equal("hello", obj2[3])
79end
80
81os.exit(lunit.run())
82