userver: /data/code/userver/libraries/protobuf/tests/json/bool_to_json_test.cpp Source File
Loading...
Searching...
No Matches
bool_to_json_test.cpp
1#include <gtest/gtest.h>
2
3#include <ostream>
4#include <string>
5
6#include <fmt/format.h>
7
8#include <userver/protobuf/json/convert.hpp>
9#include <userver/utest/assert_macros.hpp>
10
11#include "utils.hpp"
12
13USERVER_NAMESPACE_BEGIN
14
15namespace protobuf::json::tests {
16
17struct BoolToJsonSuccessTestParam {
18 BoolMessageData input = {};
19 std::string expected_json = {};
20 WriteOptions options = {};
21};
22
23void PrintTo(const BoolToJsonSuccessTestParam& param, std::ostream* os) {
24 *os << fmt::format("{{ input = {{.field1={}}} }}", param.input.field1);
25}
26
27class BoolToJsonSuccessTest : public ::testing::TestWithParam<BoolToJsonSuccessTestParam> {};
28
29INSTANTIATE_TEST_SUITE_P(
30 ,
31 BoolToJsonSuccessTest,
32 ::testing::Values(
33 BoolToJsonSuccessTestParam{BoolMessageData{false}, R"({})"},
34 BoolToJsonSuccessTestParam{
35 BoolMessageData{false},
36 R"({"field1":false})",
37 WriteOptions{.always_print_fields_with_no_presence = true}
38 },
39 BoolToJsonSuccessTestParam{BoolMessageData{true}, R"({"field1":true})"}
40 )
41);
42
43TEST_P(BoolToJsonSuccessTest, Test) {
44 const auto& param = GetParam();
45
46 auto input = PrepareTestData(param.input);
47 formats::json::Value json, expected_json, sample_json;
48
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)));
52
53 EXPECT_EQ(json, expected_json);
54 EXPECT_EQ(expected_json, sample_json);
55}
56
57} // namespace protobuf::json::tests
58
59USERVER_NAMESPACE_END