aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/protobuf/json/ut
diff options
context:
space:
mode:
authormalkovskynv <malkovskynv@yandex-team.com>2023-08-03 13:42:05 +0300
committermalkovskynv <malkovskynv@yandex-team.com>2023-08-03 13:42:05 +0300
commit29af40f86c4159175acf78d57de7cd39e44c0dab (patch)
tree016948d29c43f651dd64d5a9f2d9cbdd4a827bfc /library/cpp/protobuf/json/ut
parentfef1ffbaef82af08b6201f41c2ed15723a4fe1cf (diff)
downloadydb-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.cpp13
-rw-r--r--library/cpp/protobuf/json/ut/proto2json_ut.cpp16
-rw-r--r--library/cpp/protobuf/json/ut/test.proto11
-rw-r--r--library/cpp/protobuf/json/ut/ya.make1
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()