1#include <gtest/gtest.h>
5#include <userver/protobuf/json/convert.hpp>
6#include <userver/utest/assert_macros.hpp>
10USERVER_NAMESPACE_BEGIN
12namespace protobuf::json::tests {
14struct NullValueToJsonSuccessTestParam {
16 std::string expected_json = {};
20 bool skip_native_check =
false;
23class NullValueToJsonSuccessTest :
public ::testing::TestWithParam<NullValueToJsonSuccessTestParam> {};
25INSTANTIATE_TEST_SUITE_P(
27 NullValueToJsonSuccessTest,
29 NullValueToJsonSuccessTestParam{NullValueMessageData{}, R"({})"},
30 NullValueToJsonSuccessTestParam{
31 NullValueMessageData{},
32 R"({"field1":null,"field3":[],"field4":{}})",
33 {.always_print_fields_with_no_presence =
true},
37 NullValueToJsonSuccessTestParam{
NullValueMessageData{.field2 = kNullConst}, R"({"field2":null})"},
38 NullValueToJsonSuccessTestParam{
41 .field3 = {kNullConst, kNullConst},
42 .field4 = {{1, kNullConst}, {2, kNullConst}}
44 R"({"field2":null,"field3":[null,null],"field4":{"1":null,"2":null}})"
49TEST_P(NullValueToJsonSuccessTest, Test) {
50 const auto& param = GetParam();
52 auto input = PrepareTestData(param.input);
58 UASSERT_NO_THROW((expected_json = PrepareJsonTestData(param.expected_json)));
60 if (!param.skip_native_check) {
62 EXPECT_EQ(json, sample_json);
65 EXPECT_EQ(json, expected_json);