summaryrefslogtreecommitdiff
path: root/modules/codec-json/tests
diff options
context:
space:
mode:
Diffstat (limited to 'modules/codec-json/tests')
-rw-r--r--modules/codec-json/tests/codec-json.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/modules/codec-json/tests/codec-json.cpp b/modules/codec-json/tests/codec-json.cpp
index 375d543..723e78c 100644
--- a/modules/codec-json/tests/codec-json.cpp
+++ b/modules/codec-json/tests/codec-json.cpp
@@ -352,4 +352,36 @@ SAW_TEST("Int64 read"){
typename native_data_type<schema::Int64>::type dec_val = -453;
SAW_EXPECT( dec_val == native_int.get(), std::string{"Value is not being encoded correctly. Encoded: "} + std::to_string(static_cast<int>(native_int.get())));
}
+
+SAW_TEST("Tuple Pretty Encode and Decode"){
+ using namespace saw;
+ data<schema::TestTuple, encode::Native> native_tup;
+ data<schema::TestTuple, encode::Json> json_tup;
+
+ auto& nat_zero = native_tup.template get<0>();
+ auto& nat_one = native_tup.template get<1>();
+
+ nat_zero.set("bar");
+ nat_one.set(34);
+
+ codec_config<encode::Json> json_config;
+ json_config.pretty = true;
+ codec<schema::TestTuple, encode::Json> json_codec{json_config};
+
+ error_or<void> eov = json_codec.encode(native_tup, json_tup);
+ SAW_EXPECT(eov.is_value(), "Encoding error");
+
+ std::string_view str_v = "[\r\n\t\"bar\",\r\n\t34\r\n]";
+ std::string enc_val = convert_to_string(json_tup.get_buffer());
+
+ SAW_EXPECT(enc_val == str_v, std::string{"Tuple not encoded correctly. Encoded: "} + enc_val + std::string{" Expected: "} + std::string{str_v});
+ native_tup = {};
+
+ eov = json_codec.decode(json_tup, native_tup);
+ SAW_EXPECT(eov.is_value(), "Decoding error");
+
+ SAW_EXPECT(native_tup.template get<0>() == "bar", "Invalid Value 0");
+ SAW_EXPECT(native_tup.template get<1>().get() == 34, "Invalid Value 1");
+
+}
}