16 #include "absl/flags/marshalling.h"
25 #include "gtest/gtest.h"
29 TEST(MarshallingTest, TestBoolParsing) {
109 TEST(MarshallingTest, TestInt16Parsing) {
170 TEST(MarshallingTest, TestUint16Parsing) {
226 TEST(MarshallingTest, TestInt32Parsing) {
287 TEST(MarshallingTest, TestUint32Parsing) {
343 TEST(MarshallingTest, TestInt64Parsing) {
404 TEST(MarshallingTest, TestUInt64Parsing) {
458 TEST(MarshallingTest, TestFloatParsing) {
533 TEST(MarshallingTest, TestDoubleParsing) {
612 TEST(MarshallingTest, TestStringParsing) {
640 TEST(MarshallingTest, TestVectorOfStringParsing) {
642 std::vector<std::string>
value;
662 TEST(MarshallingTest, TestOptionalBoolParsing) {
682 TEST(MarshallingTest, TestOptionalIntParsing) {
702 TEST(MarshallingTest, TestOptionalDoubleParsing) {
722 TEST(MarshallingTest, TestOptionalStringParsing) {
744 TEST(MarshallingTest, TestBoolUnparsing) {
751 TEST(MarshallingTest, TestInt16Unparsing) {
768 TEST(MarshallingTest, TestUint16Unparsing) {
781 TEST(MarshallingTest, TestInt32Unparsing) {
798 TEST(MarshallingTest, TestUint32Unparsing) {
811 TEST(MarshallingTest, TestInt64Unparsing) {
824 value = 0x7FFFFFFFFFFFFFFF;
826 value = 0xFFFFFFFFFFFFFFFF;
832 TEST(MarshallingTest, TestUint64Unparsing) {
841 value = 0xFFFFFFFFFFFFFFFF;
847 TEST(MarshallingTest, TestFloatUnparsing) {
862 TEST(MarshallingTest, TestDoubleUnparsing) {
875 value = std::nan(
"");
877 value = std::numeric_limits<double>::infinity();
883 TEST(MarshallingTest, TestStringUnparsing) {
893 TEST(MarshallingTest, TestOptionalBoolUnparsing) {
901 value = absl::nullopt;
907 TEST(MarshallingTest, TestOptionalIntUnparsing) {
915 value = absl::nullopt;
921 TEST(MarshallingTest, TestOptionalDoubleUnparsing) {
929 value = absl::nullopt;
935 TEST(MarshallingTest, TestOptionalStringUnparsing) {
951 #if defined(ABSL_HAVE_STD_OPTIONAL) && !defined(ABSL_USES_STD_OPTIONAL)
953 TEST(MarshallingTest, TestStdOptionalUnparsing) {
954 std::optional<std::string> strvalue;
966 std::optional<int> intvalue;
977 template <
typename T>
978 void TestRoundtrip(
T v) {
985 TEST(MarshallingTest, TestFloatRoundTrip) {
987 TestRoundtrip(0.12
f);
988 TestRoundtrip(0.123
f);
989 TestRoundtrip(0.1234
f);
990 TestRoundtrip(0.12345
f);
991 TestRoundtrip(0.123456
f);
992 TestRoundtrip(0.1234567
f);
993 TestRoundtrip(0.12345678
f);
995 TestRoundtrip(0.1e20f);
996 TestRoundtrip(0.12e20f);
997 TestRoundtrip(0.123e20f);
998 TestRoundtrip(0.1234e20f);
999 TestRoundtrip(0.12345e20f);
1000 TestRoundtrip(0.123456e20f);
1001 TestRoundtrip(0.1234567e20f);
1002 TestRoundtrip(0.12345678e20f);
1004 TestRoundtrip(0.1e-20
f);
1005 TestRoundtrip(0.12e-20
f);
1006 TestRoundtrip(0.123e-20
f);
1007 TestRoundtrip(0.1234e-20
f);
1008 TestRoundtrip(0.12345e-20
f);
1009 TestRoundtrip(0.123456e-20
f);
1010 TestRoundtrip(0.1234567e-20
f);
1011 TestRoundtrip(0.12345678e-20
f);
1014 TEST(MarshallingTest, TestDoubleRoundTrip) {
1016 TestRoundtrip(0.12);
1017 TestRoundtrip(0.123);
1018 TestRoundtrip(0.1234);
1019 TestRoundtrip(0.12345);
1020 TestRoundtrip(0.123456);
1021 TestRoundtrip(0.1234567);
1022 TestRoundtrip(0.12345678);
1023 TestRoundtrip(0.123456789);
1024 TestRoundtrip(0.1234567891);
1025 TestRoundtrip(0.12345678912);
1026 TestRoundtrip(0.123456789123);
1027 TestRoundtrip(0.1234567891234);
1028 TestRoundtrip(0.12345678912345);
1029 TestRoundtrip(0.123456789123456);
1030 TestRoundtrip(0.1234567891234567);
1031 TestRoundtrip(0.12345678912345678);
1033 TestRoundtrip(0.1e50);
1034 TestRoundtrip(0.12e50);
1035 TestRoundtrip(0.123e50);
1036 TestRoundtrip(0.1234e50);
1037 TestRoundtrip(0.12345e50);
1038 TestRoundtrip(0.123456e50);
1039 TestRoundtrip(0.1234567e50);
1040 TestRoundtrip(0.12345678e50);
1041 TestRoundtrip(0.123456789e50);
1042 TestRoundtrip(0.1234567891e50);
1043 TestRoundtrip(0.12345678912e50);
1044 TestRoundtrip(0.123456789123e50);
1045 TestRoundtrip(0.1234567891234e50);
1046 TestRoundtrip(0.12345678912345e50);
1047 TestRoundtrip(0.123456789123456e50);
1048 TestRoundtrip(0.1234567891234567e50);
1049 TestRoundtrip(0.12345678912345678e50);
1051 TestRoundtrip(0.1e-50);
1052 TestRoundtrip(0.12e-50);
1053 TestRoundtrip(0.123e-50);
1054 TestRoundtrip(0.1234e-50);
1055 TestRoundtrip(0.12345e-50);
1056 TestRoundtrip(0.123456e-50);
1057 TestRoundtrip(0.1234567e-50);
1058 TestRoundtrip(0.12345678e-50);
1059 TestRoundtrip(0.123456789e-50);
1060 TestRoundtrip(0.1234567891e-50);
1061 TestRoundtrip(0.12345678912e-50);
1062 TestRoundtrip(0.123456789123e-50);
1063 TestRoundtrip(0.1234567891234e-50);
1064 TestRoundtrip(0.12345678912345e-50);
1065 TestRoundtrip(0.123456789123456e-50);
1066 TestRoundtrip(0.1234567891234567e-50);
1067 TestRoundtrip(0.12345678912345678e-50);