v2 / vlib / toml / tests / default_value_test.v
85 lines · 76 sloc · 3.38 KB · 3c0358cce78c7722cfadeabe12a86d34f6dc1ea4
Raw
1import toml
2
3const toml_text = '# This TOML can reflect/decode to a struct
4val_string = "test"
5val_bool = false
6val_int = 456
7val_i64 = 4567
8val_u64 = 45678
9val_f32 = 200.2
10val_f64 = 2000.2
11val_datetime = 2024-10-05 09:10:20.000
12val_date = 2099-09-09
13val_time = 22:22:22.222
14'
15
16const toml_all_default_text = '# This TOML can reflect/decode to a struct all with default values'
17
18struct Test {
19 val_string string = 'abcd'
20 val_bool bool = true
21 val_int int = 123
22 val_i64 i64 = 1234
23 val_u64 u64 = 12345
24 val_f32 f32 = 100.1
25 val_f64 f64 = 1000.1
26 val_datetime toml.DateTime = toml.DateTime{'1980-07-11 21:23:42.123'}
27 val_date toml.Date = toml.Date{'1977-07-07'}
28 val_time toml.Time = toml.Time{'11:11:11.111'}
29}
30
31fn test_reflect_default_values() {
32 toml_has_values := toml.parse_text(toml_text) or { panic(err) }
33 test_has_values := toml_has_values.reflect[Test]()
34
35 assert test_has_values.val_string == 'test'
36 assert test_has_values.val_bool == false
37 assert test_has_values.val_int == 456
38 assert test_has_values.val_i64 == 4567
39 assert test_has_values.val_u64 == 45678
40 assert test_has_values.val_f32 == 200.2
41 assert test_has_values.val_f64 == 2000.2
42 assert test_has_values.val_datetime == toml.DateTime{'2024-10-05 09:10:20.000'}
43 assert test_has_values.val_date == toml.Date{'2099-09-09'}
44 assert test_has_values.val_time == toml.Time{'22:22:22.222'}
45
46 toml_all_default_values := toml.parse_text(toml_all_default_text) or { panic(err) }
47 test_all_default_values := toml_all_default_values.reflect[Test]()
48
49 assert test_all_default_values.val_string == 'abcd'
50 assert test_all_default_values.val_bool == true
51 assert test_all_default_values.val_int == 123
52 assert test_all_default_values.val_i64 == 1234
53 assert test_all_default_values.val_u64 == 12345
54 assert test_all_default_values.val_f32 == 100.1
55 assert test_all_default_values.val_f64 == 1000.1
56 assert test_all_default_values.val_datetime == toml.DateTime{'1980-07-11 21:23:42.123'}
57 assert test_all_default_values.val_date == toml.Date{'1977-07-07'}
58 assert test_all_default_values.val_time == toml.Time{'11:11:11.111'}
59}
60
61fn test_decode_struct_default_values() {
62 test_has_values := toml.decode[Test](toml_text) or { panic(err) }
63 assert test_has_values.val_string == 'test'
64 assert test_has_values.val_bool == false
65 assert test_has_values.val_int == 456
66 assert test_has_values.val_i64 == 4567
67 assert test_has_values.val_u64 == 45678
68 assert test_has_values.val_f32 == 200.2
69 assert test_has_values.val_f64 == 2000.2
70 assert test_has_values.val_datetime == toml.DateTime{'2024-10-05 09:10:20.000'}
71 assert test_has_values.val_date == toml.Date{'2099-09-09'}
72 assert test_has_values.val_time == toml.Time{'22:22:22.222'}
73
74 test_all_default_values := toml.decode[Test](toml_all_default_text) or { panic(err) }
75 assert test_all_default_values.val_string == 'abcd'
76 assert test_all_default_values.val_bool == true
77 assert test_all_default_values.val_int == 123
78 assert test_all_default_values.val_i64 == 1234
79 assert test_all_default_values.val_u64 == 12345
80 assert test_all_default_values.val_f32 == 100.1
81 assert test_all_default_values.val_f64 == 1000.1
82 assert test_all_default_values.val_datetime == toml.DateTime{'1980-07-11 21:23:42.123'}
83 assert test_all_default_values.val_date == toml.Date{'1977-07-07'}
84 assert test_all_default_values.val_time == toml.Time{'11:11:11.111'}
85}
86