v2 / vlib / toml / tests / table_test.v
89 lines · 64 sloc · 1.78 KB · f09826e928f9612bab9299faefff7cf34a503362
Raw
1import toml
2
3const toml_table_text = 'inline = {a.b = 42}
4
5many.dots.here.dot.dot.dot = {a.b.c = 1, a.b.d = 2}
6
7a = { a.b = 1 }
8b = { "a"."b" = 1 }
9c = { a . b = 1 }
10d = { \'a\' . "b" = 1 }
11e = {a.b=1}
12
13[tbl]
14a.b.c = {d.e=1}
15
16[tbl.x]
17a.b.c = {d.e=1}
18
19[[arr]]
20t = {a.b=1}
21T = {a.b=1}
22
23[[arr]]
24t = {a.b=2}
25T = {a.b=2}'
26
27fn test_tables() {
28 mut toml_doc := toml.parse_text(toml_table_text) or { panic(err) }
29
30 mut value := toml_doc.value('inline.a.b')
31 assert value.int() == 42
32
33 value = toml_doc.value('many.dots.here.dot.dot.dot.a.b.c')
34 assert value.int() == 1
35
36 value = toml_doc.value('many.dots.here.dot.dot.dot.a.b.d')
37 assert value.int() == 2
38
39 value = toml_doc.value('a.a.b')
40 assert value.int() == 1
41
42 value = toml_doc.value('b.a.b')
43 assert value.int() == 1
44
45 value = toml_doc.value('c.a.b')
46 assert value.int() == 1
47
48 value = toml_doc.value('d.a.b')
49 assert value.int() == 1
50
51 value = toml_doc.value('e.a.b')
52 assert value.int() == 1
53
54 value = toml_doc.value('tbl.a.b.c.d.e')
55 assert value.int() == 1
56
57 value = toml_doc.value('tbl.x.a.b.c.d.e')
58 assert value.int() == 1
59
60 mut m := toml_doc.value('tbl') as map[string]toml.Any
61
62 value = m.value('a.b.c.d.e')
63 assert value.int() == 1
64
65 value = m.value('x.a.b.c.d.e')
66 assert value.int() == 1
67
68 arr := toml_doc.value('arr') as []toml.Any
69
70 for i := 0; i < arr.len; i++ {
71 entry := (arr[i] as map[string]toml.Any)
72 value = entry.value('t.a.b')
73 assert value.int() == i + 1
74 value = entry.value('T.a.b')
75 assert value.int() == i + 1
76 }
77
78 arr0 := arr[0] as map[string]toml.Any
79 value = arr0.value('t.a.b')
80 assert value.int() == 1
81 value = arr0.value('T.a.b')
82 assert value.int() == 1
83
84 arr1 := arr[1] as map[string]toml.Any
85 value = arr1.value('t.a.b')
86 assert value.int() == 2
87 value = arr1.value('T.a.b')
88 assert value.int() == 2
89}
90