userver
C++ Async Framework
Toggle main menu visibility
Loading...
Searching...
No Matches
double_to_json_test.cpp
1
#
include
<
gtest
/
gtest
.
h
>
2
3
#
include
<
limits
>
4
#
include
<
ostream
>
5
#
include
<
string
>
6
7
#
include
<
fmt
/
format
.
h
>
8
9
#
include
<
userver
/
protobuf
/
json
/
convert
.
hpp
>
10
#
include
<
userver
/
utest
/
assert_macros
.
hpp
>
11
12
#
include
"utils.hpp"
13
14
USERVER_NAMESPACE_BEGIN
15
16
namespace
protobuf::json::tests {
17
18
constexpr
double
kMax = std::numeric_limits<
double
>::max();
19
constexpr
double
kMin = std::numeric_limits<
double
>::min();
20
21
struct
DoubleToJsonSuccessTestParam {
22
DoubleMessageData
input = {};
23
PrintOptions
options = {};
24
};
25
26
void
PrintTo(
const
DoubleToJsonSuccessTestParam& param, std::ostream* os) {
27
*os << fmt::format(
"{{ input = {{.field1={}}} }}"
, param.input.field1);
28
}
29
30
class
DoubleToJsonSuccessTest :
public
::testing::TestWithParam<DoubleToJsonSuccessTestParam> {};
31
32
INSTANTIATE_TEST_SUITE_P(
33
,
34
DoubleToJsonSuccessTest,
35
::
testing
::Values(
36
DoubleToJsonSuccessTestParam{
DoubleMessageData
{0.0}},
37
DoubleToJsonSuccessTestParam{
DoubleMessageData
{0}, {.
always_print_fields_with_no_presence
=
true
}},
38
DoubleToJsonSuccessTestParam{
DoubleMessageData
{1}},
39
DoubleToJsonSuccessTestParam{
DoubleMessageData
{-1}},
40
DoubleToJsonSuccessTestParam{
DoubleMessageData
{100.12357}},
41
DoubleToJsonSuccessTestParam{
DoubleMessageData
{-100.12357}},
42
DoubleToJsonSuccessTestParam{
DoubleMessageData
{kMax}},
43
DoubleToJsonSuccessTestParam{
DoubleMessageData
{-kMax}},
44
DoubleToJsonSuccessTestParam{
DoubleMessageData
{kMin}},
45
DoubleToJsonSuccessTestParam{
DoubleMessageData
{-kMin}}
46
)
47
);
48
49
TEST_P(DoubleToJsonSuccessTest, Test) {
50
const
auto
& param = GetParam();
51
52
auto
input = PrepareTestData(param.input);
53
formats::
json
::
Value
json;
54
formats::
json
::
Value
sample_json;
55
56
UASSERT_NO_THROW
((json = MessageToJson(input, param.options)));
57
UASSERT_NO_THROW
((sample_json = CreateSampleJson(input, param.options)));
58
59
// Can't compare 'formats::json::Value' using 'operator==' because protobuf json writer outputs
60
// distinct number of fractional digits than usever's one. Still after converting to target
61
// type values should be equal.
62
63
EXPECT_LE(json
.
GetSize
(
)
, std::size_t{1});
64
EXPECT_EQ(json
.
GetSize
(
)
, sample_json
.
GetSize
(
)
);
65
66
if
(json
.
GetSize
(
)
== 0) {
67
return
;
68
}
69
70
EXPECT_EQ(json
[
"field1"
]
.As<
double
>(), param.input.field1);
71
EXPECT_EQ(json
[
"field1"
]
.As<
double
>(), sample_json
[
"field1"
]
.As<
double
>());
72
}
73
74
}
// namespace protobuf::json::tests
75
76
USERVER_NAMESPACE_END
protobuf
tests
json
double_to_json_test.cpp
Generated on
for userver by
Doxygen
1.17.0