mirror of
https://github.com/vlang/v.git
synced 2025-09-13 14:32:26 +03:00
85 lines
3.4 KiB
V
85 lines
3.4 KiB
V
import toml
|
|
|
|
const toml_text = '# This TOML can reflect/decode to a struct
|
|
val_string = "test"
|
|
val_bool = false
|
|
val_int = 456
|
|
val_i64 = 4567
|
|
val_u64 = 45678
|
|
val_f32 = 200.2
|
|
val_f64 = 2000.2
|
|
val_datetime = 2024-10-05 09:10:20.000
|
|
val_date = 2099-09-09
|
|
val_time = 22:22:22.222
|
|
'
|
|
|
|
const toml_all_default_text = '# This TOML can reflect/decode to a struct all with default values'
|
|
|
|
struct Test {
|
|
val_string string = 'abcd'
|
|
val_bool bool = true
|
|
val_int int = 123
|
|
val_i64 i64 = 1234
|
|
val_u64 u64 = 12345
|
|
val_f32 f32 = 100.1
|
|
val_f64 f64 = 1000.1
|
|
val_datetime toml.DateTime = toml.DateTime{'1980-07-11 21:23:42.123'}
|
|
val_date toml.Date = toml.Date{'1977-07-07'}
|
|
val_time toml.Time = toml.Time{'11:11:11.111'}
|
|
}
|
|
|
|
fn test_reflect_default_values() {
|
|
toml_has_values := toml.parse_text(toml_text) or { panic(err) }
|
|
test_has_values := toml_has_values.reflect[Test]()
|
|
|
|
assert test_has_values.val_string == 'test'
|
|
assert test_has_values.val_bool == false
|
|
assert test_has_values.val_int == 456
|
|
assert test_has_values.val_i64 == 4567
|
|
assert test_has_values.val_u64 == 45678
|
|
assert test_has_values.val_f32 == 200.2
|
|
assert test_has_values.val_f64 == 2000.2
|
|
assert test_has_values.val_datetime == toml.DateTime{'2024-10-05 09:10:20.000'}
|
|
assert test_has_values.val_date == toml.Date{'2099-09-09'}
|
|
assert test_has_values.val_time == toml.Time{'22:22:22.222'}
|
|
|
|
toml_all_default_values := toml.parse_text(toml_all_default_text) or { panic(err) }
|
|
test_all_default_values := toml_all_default_values.reflect[Test]()
|
|
|
|
assert test_all_default_values.val_string == 'abcd'
|
|
assert test_all_default_values.val_bool == true
|
|
assert test_all_default_values.val_int == 123
|
|
assert test_all_default_values.val_i64 == 1234
|
|
assert test_all_default_values.val_u64 == 12345
|
|
assert test_all_default_values.val_f32 == 100.1
|
|
assert test_all_default_values.val_f64 == 1000.1
|
|
assert test_all_default_values.val_datetime == toml.DateTime{'1980-07-11 21:23:42.123'}
|
|
assert test_all_default_values.val_date == toml.Date{'1977-07-07'}
|
|
assert test_all_default_values.val_time == toml.Time{'11:11:11.111'}
|
|
}
|
|
|
|
fn test_decode_struct_default_values() {
|
|
test_has_values := toml.decode[Test](toml_text) or { panic(err) }
|
|
assert test_has_values.val_string == 'test'
|
|
assert test_has_values.val_bool == false
|
|
assert test_has_values.val_int == 456
|
|
assert test_has_values.val_i64 == 4567
|
|
assert test_has_values.val_u64 == 45678
|
|
assert test_has_values.val_f32 == 200.2
|
|
assert test_has_values.val_f64 == 2000.2
|
|
assert test_has_values.val_datetime == toml.DateTime{'2024-10-05 09:10:20.000'}
|
|
assert test_has_values.val_date == toml.Date{'2099-09-09'}
|
|
assert test_has_values.val_time == toml.Time{'22:22:22.222'}
|
|
|
|
test_all_default_values := toml.decode[Test](toml_all_default_text) or { panic(err) }
|
|
assert test_all_default_values.val_string == 'abcd'
|
|
assert test_all_default_values.val_bool == true
|
|
assert test_all_default_values.val_int == 123
|
|
assert test_all_default_values.val_i64 == 1234
|
|
assert test_all_default_values.val_u64 == 12345
|
|
assert test_all_default_values.val_f32 == 100.1
|
|
assert test_all_default_values.val_f64 == 1000.1
|
|
assert test_all_default_values.val_datetime == toml.DateTime{'1980-07-11 21:23:42.123'}
|
|
assert test_all_default_values.val_date == toml.Date{'1977-07-07'}
|
|
assert test_all_default_values.val_time == toml.Time{'11:11:11.111'}
|
|
}
|