diff options
Diffstat (limited to 'v_windows/v/vlib/json/json_decode_test.v')
-rw-r--r-- | v_windows/v/vlib/json/json_decode_test.v | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/v_windows/v/vlib/json/json_decode_test.v b/v_windows/v/vlib/json/json_decode_test.v new file mode 100644 index 0000000..5b21838 --- /dev/null +++ b/v_windows/v/vlib/json/json_decode_test.v @@ -0,0 +1,46 @@ +import json + +struct TestTwin { + id int + seed string + pubkey string +} + +struct TestTwins { +mut: + twins []TestTwin [required] +} + +fn test_json_decode_fails_to_decode_unrecognised_array_of_dicts() { + data := '[{"twins":[{"id":123,"seed":"abcde","pubkey":"xyzasd"},{"id":456,"seed":"dfgdfgdfgd","pubkey":"skjldskljh45sdf"}]}]' + json.decode(TestTwins, data) or { + assert err.msg == "expected field 'twins' is missing" + return + } + assert false +} + +fn test_json_decode_works_with_a_dict_of_arrays() { + data := '{"twins":[{"id":123,"seed":"abcde","pubkey":"xyzasd"},{"id":456,"seed":"dfgdfgdfgd","pubkey":"skjldskljh45sdf"}]}' + res := json.decode(TestTwins, data) or { + assert false + exit(1) + } + assert res.twins[0].id == 123 + assert res.twins[0].seed == 'abcde' + assert res.twins[0].pubkey == 'xyzasd' + assert res.twins[1].id == 456 + assert res.twins[1].seed == 'dfgdfgdfgd' + assert res.twins[1].pubkey == 'skjldskljh45sdf' +} + +struct Mount { + size u64 +} + +fn test_decode_u64() ? { + data := '{"size": 10737418240}' + m := json.decode(Mount, data) ? + assert m.size == 10737418240 + println(m) +} |