aboutsummaryrefslogtreecommitdiffhomepage
path: root/javanano/src/test/java/com/google/protobuf/nano/NanoTest.java
diff options
context:
space:
mode:
authorGravatar Jisi Liu <jisi.liu@gmail.com>2015-02-05 14:52:17 -0800
committerGravatar Jisi Liu <jisi.liu@gmail.com>2015-02-05 14:52:17 -0800
commitbd3573cb096cb8f0ec4bf29f0e11744a06a9e5a6 (patch)
tree8114227aef1743eb20cdf6022fb1cebb9992c9d6 /javanano/src/test/java/com/google/protobuf/nano/NanoTest.java
parentca35a8030339d85cb4efb928b1aae8e38584d214 (diff)
Fix the behavior when merging conflicting keys, the new value always
override the existing one even for message types.
Diffstat (limited to 'javanano/src/test/java/com/google/protobuf/nano/NanoTest.java')
-rw-r--r--javanano/src/test/java/com/google/protobuf/nano/NanoTest.java28
1 files changed, 27 insertions, 1 deletions
diff --git a/javanano/src/test/java/com/google/protobuf/nano/NanoTest.java b/javanano/src/test/java/com/google/protobuf/nano/NanoTest.java
index a7383cb4..bf8a391a 100644
--- a/javanano/src/test/java/com/google/protobuf/nano/NanoTest.java
+++ b/javanano/src/test/java/com/google/protobuf/nano/NanoTest.java
@@ -3742,7 +3742,6 @@ public class NanoTest extends TestCase {
byte[] output = MessageNano.toByteArray(origin);
TestMap parsed = new TestMap();
MessageNano.mergeFrom(parsed, output);
- // TODO(liujisi): Test merging message type values.
// TODO(liujisi): Test missing key/value in parsing.
}
@@ -3769,6 +3768,33 @@ public class NanoTest extends TestCase {
}
}
+ /**
+ * Tests that merging bytes containing conflicting keys with override the
+ * message value instead of merging the message value into the existing entry.
+ */
+ public void testMapMergeOverrideMessageValues() throws Exception {
+ TestMap.MessageValue origValue = new TestMap.MessageValue();
+ origValue.value = 1;
+ origValue.value2 = 2;
+ TestMap.MessageValue newValue = new TestMap.MessageValue();
+ newValue.value = 3;
+
+ TestMap origMessage = new TestMap();
+ origMessage.int32ToMessageField =
+ new HashMap<Integer, MapTestProto.TestMap.MessageValue>();
+ origMessage.int32ToMessageField.put(1, origValue);
+
+ TestMap newMessage = new TestMap();
+ newMessage.int32ToMessageField =
+ new HashMap<Integer, MapTestProto.TestMap.MessageValue>();
+ newMessage.int32ToMessageField.put(1, newValue);
+ MessageNano.mergeFrom(origMessage,
+ MessageNano.toByteArray(newMessage));
+ TestMap.MessageValue mergedValue = origMessage.int32ToMessageField.get(1);
+ assertEquals(3, mergedValue.value);
+ assertEquals(0, mergedValue.value2);
+ }
+
private static final Integer[] int32Values = new Integer[] {
0, 1, -1, Integer.MAX_VALUE, Integer.MIN_VALUE,
};