aboutsummaryrefslogtreecommitdiff
path: root/java/util/src/test/java/com/google/protobuf/util/JsonFormatTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/util/src/test/java/com/google/protobuf/util/JsonFormatTest.java')
-rw-r--r--java/util/src/test/java/com/google/protobuf/util/JsonFormatTest.java51
1 files changed, 50 insertions, 1 deletions
diff --git a/java/util/src/test/java/com/google/protobuf/util/JsonFormatTest.java b/java/util/src/test/java/com/google/protobuf/util/JsonFormatTest.java
index d9bbe587..7637c267 100644
--- a/java/util/src/test/java/com/google/protobuf/util/JsonFormatTest.java
+++ b/java/util/src/test/java/com/google/protobuf/util/JsonFormatTest.java
@@ -161,6 +161,10 @@ public class JsonFormatTest extends TestCase {
JsonFormat.parser().merge(json, builder);
}
+ private void mergeFromJsonIgnoringUnknownFields(String json, Message.Builder builder) throws IOException {
+ JsonFormat.parser().ignoringUnknownFields().merge(json, builder);
+ }
+
public void testAllFields() throws Exception {
TestAllTypes.Builder builder = TestAllTypes.newBuilder();
setAllFields(builder);
@@ -668,10 +672,22 @@ public class JsonFormatTest extends TestCase {
+ "}",
builder);
fail();
+
} catch (InvalidProtocolBufferException e) {
// Exception expected.
}
}
+
+ public void testMapEnumNullValueIsIgnored() throws Exception {
+ TestMap.Builder builder = TestMap.newBuilder();
+ mergeFromJsonIgnoringUnknownFields(
+ "{\n"
+ + " \"int32ToEnumMap\": {\"1\": null}\n"
+ + "}",
+ builder);
+ TestMap map = builder.build();
+ assertEquals(0, map.getInt32ToEnumMapMap().entrySet().size());
+ }
public void testParserAcceptNonQuotedObjectKey() throws Exception {
TestMap.Builder builder = TestMap.newBuilder();
@@ -1172,7 +1188,40 @@ public class JsonFormatTest extends TestCase {
String json = "{\n" + " \"unknownField\": \"XXX\"\n" + "}";
JsonFormat.parser().ignoringUnknownFields().merge(json, builder);
}
-
+
+ public void testParserIgnoringUnknownEnums() throws Exception {
+ TestAllTypes.Builder builder = TestAllTypes.newBuilder();
+ String json = "{\n" + " \"optionalNestedEnum\": \"XXX\"\n" + "}";
+ JsonFormat.parser().ignoringUnknownFields().merge(json, builder);
+ assertEquals(0, builder.getOptionalNestedEnumValue());
+ }
+
+ public void testUnknownEnumMap() throws Exception {
+ TestMap.Builder builder = TestMap.newBuilder();
+ JsonFormat.parser().ignoringUnknownFields().merge(
+ "{\n"
+ + " \"int32ToEnumMap\": {1: XXX, 2: FOO}"
+ + "}",
+ builder);
+
+ assertEquals(NestedEnum.FOO, builder.getInt32ToEnumMapMap().get(2));
+ assertEquals(1, builder.getInt32ToEnumMapMap().size());
+ }
+
+ public void testRepeatedUnknownEnum() throws Exception {
+ TestAllTypes.Builder builder = TestAllTypes.newBuilder();
+ JsonFormat.parser().ignoringUnknownFields().merge(
+ "{\n"
+ + " \"repeatedNestedEnum\": [XXX, FOO, BAR, BAZ]"
+ + "}",
+ builder);
+
+ assertEquals(NestedEnum.FOO, builder.getRepeatedNestedEnum(0));
+ assertEquals(NestedEnum.BAR, builder.getRepeatedNestedEnum(1));
+ assertEquals(NestedEnum.BAZ, builder.getRepeatedNestedEnum(2));
+ assertEquals(3, builder.getRepeatedNestedEnumList().size());
+ }
+
public void testParserIntegerEnumValue() throws Exception {
TestAllTypes.Builder actualBuilder = TestAllTypes.newBuilder();
mergeFromJson("{\n" + " \"optionalNestedEnum\": 2\n" + "}", actualBuilder);