diff options
author | malkovskynv <malkovskynv@yandex-team.com> | 2023-08-03 13:42:05 +0300 |
---|---|---|
committer | malkovskynv <malkovskynv@yandex-team.com> | 2023-08-03 13:42:05 +0300 |
commit | 29af40f86c4159175acf78d57de7cd39e44c0dab (patch) | |
tree | 016948d29c43f651dd64d5a9f2d9cbdd4a827bfc /library/cpp/protobuf/json/ut | |
parent | fef1ffbaef82af08b6201f41c2ed15723a4fe1cf (diff) | |
download | ydb-29af40f86c4159175acf78d57de7cd39e44c0dab.tar.gz |
MARKETRECOM-8673_json_enum_value
Diffstat (limited to 'library/cpp/protobuf/json/ut')
-rw-r--r-- | library/cpp/protobuf/json/ut/json2proto_ut.cpp | 13 | ||||
-rw-r--r-- | library/cpp/protobuf/json/ut/proto2json_ut.cpp | 16 | ||||
-rw-r--r-- | library/cpp/protobuf/json/ut/test.proto | 11 | ||||
-rw-r--r-- | library/cpp/protobuf/json/ut/ya.make | 1 |
4 files changed, 41 insertions, 0 deletions
diff --git a/library/cpp/protobuf/json/ut/json2proto_ut.cpp b/library/cpp/protobuf/json/ut/json2proto_ut.cpp index d695f95c76..7b3e829868 100644 --- a/library/cpp/protobuf/json/ut/json2proto_ut.cpp +++ b/library/cpp/protobuf/json/ut/json2proto_ut.cpp @@ -478,6 +478,19 @@ Y_UNIT_TEST(TestFieldNameMode) { UNIT_ASSERT_EQUAL(proto.Getdef_lower(), 4); } + // UseJsonName with UseJsonEnumValue + { + TString modelStr(R"_({"json_enum" : "enum_1"})_"); + + TCustomJsonEnumValue proto; + TJson2ProtoConfig config; + config.SetUseJsonName(true); + config.SetUseJsonEnumValue(true); + + UNIT_ASSERT_NO_EXCEPTION(proto = Json2Proto<TCustomJsonEnumValue>(modelStr, config)); + UNIT_ASSERT_EQUAL(proto.GetJsonEnum(), EJsonEnum::J_1); + } + // FieldNameMode with UseJsonName { TJson2ProtoConfig config; diff --git a/library/cpp/protobuf/json/ut/proto2json_ut.cpp b/library/cpp/protobuf/json/ut/proto2json_ut.cpp index b70329181d..f19558e60a 100644 --- a/library/cpp/protobuf/json/ut/proto2json_ut.cpp +++ b/library/cpp/protobuf/json/ut/proto2json_ut.cpp @@ -887,6 +887,22 @@ Y_UNIT_TEST(TestFieldNameMode) { UNIT_ASSERT_STRINGS_EQUAL(jsonStr.Str(), modelStr); } + // UseJsonName and UseJsonEnumValue + { + TString modelStr(R"_({"json_enum":"enum_1"})_"); + + TCustomJsonEnumValue proto; + proto.SetJsonEnum(EJsonEnum::J_1); + + TStringStream jsonStr; + TProto2JsonConfig config; + config.SetUseJsonName(true); + config.SetUseJsonEnumValue(true); + + UNIT_ASSERT_NO_EXCEPTION(Proto2Json(proto, jsonStr, config)); + UNIT_ASSERT_STRINGS_EQUAL(jsonStr.Str(), modelStr); + } + // FieldNameMode with UseJsonName { TProto2JsonConfig config; diff --git a/library/cpp/protobuf/json/ut/test.proto b/library/cpp/protobuf/json/ut/test.proto index 8cd3db813a..1f8487521b 100644 --- a/library/cpp/protobuf/json/ut/test.proto +++ b/library/cpp/protobuf/json/ut/test.proto @@ -3,6 +3,8 @@ package NProtobufJsonTest; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; +import "library/cpp/protobuf/json/proto/enum_options.proto"; + enum EEnum { E_0 = 0; E_1 = 1; @@ -10,6 +12,11 @@ enum EEnum { E_3 = 3; }; +enum EJsonEnum { + J_0 = 0 [(json_enum_value)="enum_0"]; + J_1 = 1 [(json_enum_value)="enum_1"]; +} + message TFlatOptional { optional int32 I32 = 1; optional int64 I64 = 2; @@ -216,6 +223,10 @@ message TExtensionField { extensions 100 to 199; } +message TCustomJsonEnumValue { + optional EJsonEnum JsonEnum = 1 [json_name="json_enum"]; +} + extend TExtensionField { optional int32 bar = 123; } diff --git a/library/cpp/protobuf/json/ut/ya.make b/library/cpp/protobuf/json/ut/ya.make index 2a5391e375..0b2c954952 100644 --- a/library/cpp/protobuf/json/ut/ya.make +++ b/library/cpp/protobuf/json/ut/ya.make @@ -17,6 +17,7 @@ GENERATE_ENUM_SERIALIZATION(test.pb.h) PEERDIR( library/cpp/protobuf/interop library/cpp/protobuf/json + library/cpp/protobuf/json/proto ) END() |