-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
146 additions
and
48 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
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 @[toml_default: 'abcd'] | ||
val_bool bool @[toml_default: true] | ||
val_int int @[toml_default: 123] | ||
val_i64 i64 @[toml_default: 1234] | ||
val_u64 u64 @[toml_default: 12345] | ||
val_f32 f32 @[toml_default: 100.1] | ||
val_f64 f64 @[toml_default: 1000.1] | ||
val_datetime toml.DateTime @[toml_default: '1980-07-11 21:23:42.123'] | ||
val_date toml.Date @[toml_default: '1977-07-07'] | ||
val_time toml.Time @[toml_default: '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'} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters