From 55446448c0cd836241e8731d6af5091f0a82a14f Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Sat, 7 Nov 2026 14:57:56 +0100 Subject: Reintroduced non strict mode --- modules/codec-json/tests/codec-json.cpp | 50 +++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) (limited to 'modules/codec-json/tests') diff --git a/modules/codec-json/tests/codec-json.cpp b/modules/codec-json/tests/codec-json.cpp index ab33f5a..a87b237 100644 --- a/modules/codec-json/tests/codec-json.cpp +++ b/modules/codec-json/tests/codec-json.cpp @@ -323,6 +323,56 @@ SAW_TEST("Struct read and write"){ SAW_EXPECT(native.get<"bar">() == "baz", "Invalid value for bar"); } +SAW_TEST("Struct read with missing member"){ + using namespace saw; + data native; + data json{"{\"bar\":\"baz\"}"}; + + codec json_codec; + + error_or eov = json_codec.decode(json, native); + SAW_EXPECT(eov.is_value(), "Decoding error"); + SAW_EXPECT(native.get<"foo">().get() == 0, "Missing member foo should keep its default value"); + SAW_EXPECT(native.get<"bar">() == "baz", "Invalid value for bar"); +} + +SAW_TEST("Struct read with missing member in strict mode"){ + using namespace saw; + data native; + data json{"{\"bar\":\"baz\"}"}; + + codec_config json_config; + json_config.strict = true; + codec json_codec{json_config}; + + error_or eov = json_codec.decode(json, native); + SAW_EXPECT(eov.is_error(), "Strict decoding should reject incomplete structs"); +} + +SAW_TEST("Empty Struct read"){ + using namespace saw; + data native; + data json{"{}"}; + + codec json_codec; + + error_or eov = json_codec.decode(json, native); + SAW_EXPECT(eov.is_value(), "Decoding error"); + SAW_EXPECT(native.get<"foo">().get() == 0, "Missing member foo should keep its default value"); + SAW_EXPECT(native.get<"bar">() == "", "Missing member bar should keep its default value"); +} + +SAW_TEST("Struct read with unknown member"){ + using namespace saw; + data native; + data json{"{\"foo\":5,\"baz\":3,\"bar\":\"baz\"}"}; + + codec json_codec; + + error_or eov = json_codec.decode(json, native); + SAW_EXPECT(eov.is_error(), "Unknown members are not supported"); +} + SAW_TEST("Array Struct Empty read and write"){ using namespace saw; data native{0u}; -- cgit v1.3.1