aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/protobuf/json/ut/proto2json_ut.cpp
diff options
context:
space:
mode:
authormaxfed <maxfed@yandex-team.com>2022-12-22 13:10:49 +0300
committermaxfed <maxfed@yandex-team.com>2022-12-22 13:10:49 +0300
commit3412f691a8c5be823c995c4da884039769b5aeef (patch)
treedc30ad224de959038d9a04a7b588eff711d147c2 /library/cpp/protobuf/json/ut/proto2json_ut.cpp
parentdcc1ffc26fabcd374f52f45b980499d00fe5a00c (diff)
downloadydb-3412f691a8c5be823c995c4da884039769b5aeef.tar.gz
Add settings for converting float to string in TProto2JsonConfig
init
Diffstat (limited to 'library/cpp/protobuf/json/ut/proto2json_ut.cpp')
-rw-r--r--library/cpp/protobuf/json/ut/proto2json_ut.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/library/cpp/protobuf/json/ut/proto2json_ut.cpp b/library/cpp/protobuf/json/ut/proto2json_ut.cpp
index 3f154645a1..bf8b4994f2 100644
--- a/library/cpp/protobuf/json/ut/proto2json_ut.cpp
+++ b/library/cpp/protobuf/json/ut/proto2json_ut.cpp
@@ -1053,4 +1053,30 @@ Y_UNIT_TEST(TestSimplifiedTimestamp) {
UNIT_ASSERT_EQUAL_C(json, "{\"Timestamp\":\"1970-04-26T17:46:40.000000504Z\"}", "real value is " << json);
} // TestSimplifiedTimestamp
+Y_UNIT_TEST(TestFloatToString) {
+#define TEST_SINGLE(mode, value, expectedValue) \
+ do { \
+ TFlatOptional proto; \
+ proto.SetFloat(value); \
+ \
+ TStringStream jsonStr; \
+ TProto2JsonConfig config; \
+ config.SetFloatNDigits(3).SetFloatToStringMode(mode); \
+ UNIT_ASSERT_NO_EXCEPTION(Proto2Json(proto, jsonStr, config)); \
+ TString expectedStr = TStringBuilder() << "{\"Float\":" << expectedValue << "}"; \
+ UNIT_ASSERT_EQUAL_C(jsonStr.Str(), expectedStr, "real value is " << jsonStr.Str()); \
+ } while (false)
+
+ TEST_SINGLE(EFloatToStringMode::PREC_NDIGITS, 1234.18345, "1.23e+03");
+ TEST_SINGLE(EFloatToStringMode::PREC_NDIGITS, 12.18345, "12.2");
+ TEST_SINGLE(EFloatToStringMode::PREC_POINT_DIGITS, 12345.18355, "12345.184");
+ TEST_SINGLE(EFloatToStringMode::PREC_POINT_DIGITS, 12.18355, "12.184");
+ TEST_SINGLE(EFloatToStringMode::PREC_POINT_DIGITS, 12.18, "12.180");
+ TEST_SINGLE(EFloatToStringMode::PREC_POINT_DIGITS_STRIP_ZEROES, 12345.18355, "12345.184");
+ TEST_SINGLE(EFloatToStringMode::PREC_POINT_DIGITS_STRIP_ZEROES, 12.18355, "12.184");
+ TEST_SINGLE(EFloatToStringMode::PREC_POINT_DIGITS_STRIP_ZEROES, 12.18, "12.18");
+
+#undef TEST_SINGLE
+} // TestFloatToString
+
} // TProto2JsonTest