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