v / vlib / toml / tests / key_test.v
48 lines · 40 sloc · 1.2 KB · 19f080ffb8f8f01976692f6b79d9f857c685e109
Raw
1import os
2import toml
3import toml.to
4
5fn path_by_extension(ext string) string {
6 return os.join_path(os.dir(@VEXE), 'vlib/toml/tests/testdata/key_test.${ext}')
7}
8
9fn test_keys() {
10 toml_doc := toml.parse_file(path_by_extension('toml'))!
11
12 mut value := toml_doc.value('34-11')
13 assert value.int() == 23
14
15 value = toml_doc.value('1.2')
16 assert value.int() == 3
17
18 value = toml_doc.value('34-12.2')
19 assert value.int() == 42
20
21 toml_json := to.json(toml_doc)
22 out_file_json := os.read_file(path_by_extension('out'))!
23 println(toml_json)
24 assert toml_json == out_file_json
25
26 if x := toml_doc.value_opt('unknown key') {
27 assert false
28 } else {
29 assert err.msg() == 'no value for key'
30 }
31 if x := toml_doc.value_opt("'a") {
32 assert false
33 } else {
34 assert err.msg() == 'invalid dotted key'
35 }
36}
37
38fn test_parse_dotted_key() {
39 assert toml.parse_dotted_key('')! == []
40 assert toml.parse_dotted_key('abc')! == ['abc']
41 assert toml.parse_dotted_key('tube.test."test.test".h."i.j."."k"')! == ['tube', 'test',
42 'test.test', 'h', 'i.j.', 'k']
43 if x := toml.parse_dotted_key("'some unclosed string") {
44 assert false
45 } else {
46 assert err.msg().starts_with('parse_dotted_key: could not parse key, missing closing string delimiter')
47 }
48}
49