1#include <gtest/gtest.h>
8#include <userver/protobuf/json/convert.hpp>
9#include <userver/utest/assert_macros.hpp>
13USERVER_NAMESPACE_BEGIN
17struct BoolToJsonSuccessTestParam {
19 std::string expected_json = {};
20 WriteOptions options = {};
23void PrintTo(
const BoolToJsonSuccessTestParam& param, std::ostream* os) {
24 *os << fmt::format(
"{{ input = {{.field1={}}} }}", param.input.field1);
27class BoolToJsonSuccessTest :
public ::testing::TestWithParam<BoolToJsonSuccessTestParam> {};
29INSTANTIATE_TEST_SUITE_P(
31 BoolToJsonSuccessTest,
33 BoolToJsonSuccessTestParam{BoolMessageData{
false}, R"({})"},
34 BoolToJsonSuccessTestParam{
35 BoolMessageData{
false},
36 R"({"field1":false})",
37 WriteOptions{.always_print_fields_with_no_presence =
true}
39 BoolToJsonSuccessTestParam{BoolMessageData{
true}, R"({"field1":true})"}
43TEST_P(BoolToJsonSuccessTest, Test) {
44 const auto& param = GetParam();
46 auto input = PrepareTestData(param.input);
47 formats::json::Value json, expected_json, sample_json;
49 UASSERT_NO_THROW((json = MessageToJson(input, param.options)));
50 UASSERT_NO_THROW((expected_json = PrepareJsonTestData(param.expected_json)));
51 UASSERT_NO_THROW((sample_json = CreateSampleJson(input, param.options)));
53 EXPECT_EQ(json, expected_json);
54 EXPECT_EQ(expected_json, sample_json);