31 package com.google.protobuf;
34 import map_test.MapForProto2TestProto.BizarroTestMap;
35 import map_test.MapForProto2TestProto.ReservedAsMapField;
36 import map_test.MapForProto2TestProto.ReservedAsMapFieldWithEnumValue;
37 import map_test.MapForProto2TestProto.TestMap;
38 import map_test.MapForProto2TestProto.TestMap.MessageValue;
39 import map_test.MapForProto2TestProto.TestMap.MessageWithRequiredFields;
40 import map_test.MapForProto2TestProto.TestMapOrBuilder;
41 import map_test.MapForProto2TestProto.TestRecursiveMap;
42 import map_test.MapForProto2TestProto.TestUnknownEnumValue;
43 import java.io.ByteArrayOutputStream;
44 import java.io.IOException;
45 import java.util.ArrayList;
46 import java.util.Arrays;
47 import java.util.HashMap;
48 import java.util.List;
50 import junit.framework.TestCase;
56 builder.getMutableInt32ToInt32Field().put(1, 11);
57 builder.getMutableInt32ToInt32Field().put(2, 22);
58 builder.getMutableInt32ToInt32Field().put(3, 33);
60 builder.getMutableInt32ToStringField().put(1,
"11");
61 builder.getMutableInt32ToStringField().put(2,
"22");
62 builder.getMutableInt32ToStringField().put(3,
"33");
64 builder.getMutableInt32ToBytesField().put(1,
TestUtil.toBytes(
"11"));
65 builder.getMutableInt32ToBytesField().put(2,
TestUtil.toBytes(
"22"));
66 builder.getMutableInt32ToBytesField().put(3,
TestUtil.toBytes(
"33"));
68 builder.getMutableInt32ToEnumField().put(1, TestMap.EnumValue.FOO);
69 builder.getMutableInt32ToEnumField().put(2, TestMap.EnumValue.BAR);
70 builder.getMutableInt32ToEnumField().put(3, TestMap.EnumValue.BAZ);
72 builder.getMutableInt32ToMessageField().put(
73 1, MessageValue.newBuilder().setValue(11).build());
74 builder.getMutableInt32ToMessageField().put(
75 2, MessageValue.newBuilder().setValue(22).build());
76 builder.getMutableInt32ToMessageField().put(
77 3, MessageValue.newBuilder().setValue(33).build());
79 builder.getMutableStringToInt32Field().put(
"1", 11);
80 builder.getMutableStringToInt32Field().put(
"2", 22);
81 builder.getMutableStringToInt32Field().put(
"3", 33);
86 .putInt32ToInt32Field(1, 11)
87 .putInt32ToInt32Field(2, 22)
88 .putInt32ToInt32Field(3, 33)
89 .putInt32ToStringField(1,
"11")
90 .putInt32ToStringField(2,
"22")
91 .putInt32ToStringField(3,
"33")
92 .putInt32ToBytesField(1,
TestUtil.toBytes(
"11"))
93 .putInt32ToBytesField(2,
TestUtil.toBytes(
"22"))
94 .putInt32ToBytesField(3,
TestUtil.toBytes(
"33"))
95 .putInt32ToEnumField(1, TestMap.EnumValue.FOO)
96 .putInt32ToEnumField(2, TestMap.EnumValue.BAR)
97 .putInt32ToEnumField(3, TestMap.EnumValue.BAZ)
98 .putInt32ToMessageField(1, MessageValue.newBuilder().setValue(11).build())
99 .putInt32ToMessageField(2, MessageValue.newBuilder().setValue(22).build())
100 .putInt32ToMessageField(3, MessageValue.newBuilder().setValue(33).build())
101 .putStringToInt32Field(
"1", 11)
102 .putStringToInt32Field(
"2", 22)
103 .putStringToInt32Field(
"3", 33);
107 TestMap.Builder usingMutableMapBuilder = TestMap.newBuilder();
109 TestMap usingMutableMap = usingMutableMapBuilder.build();
112 TestMap.Builder usingAccessorsBuilder = TestMap.newBuilder();
114 TestMap usingAccessors = usingAccessorsBuilder.build();
117 assertEquals(usingAccessors, usingMutableMap);
122 .putAllInt32ToInt32Field(
source.getInt32ToInt32Field())
123 .putAllInt32ToStringField(
source.getInt32ToStringField())
124 .putAllInt32ToBytesField(
source.getInt32ToBytesField())
125 .putAllInt32ToEnumField(
source.getInt32ToEnumField())
126 .putAllInt32ToMessageField(
source.getInt32ToMessageField())
127 .putAllStringToInt32Field(
source.getStringToInt32Field());
131 assertEquals(3,
message.getInt32ToInt32Field().size());
132 assertEquals(11,
message.getInt32ToInt32Field().get(1).intValue());
133 assertEquals(22,
message.getInt32ToInt32Field().get(2).intValue());
134 assertEquals(33,
message.getInt32ToInt32Field().get(3).intValue());
136 assertEquals(3,
message.getInt32ToStringField().size());
137 assertEquals(
"11",
message.getInt32ToStringField().get(1));
138 assertEquals(
"22",
message.getInt32ToStringField().get(2));
139 assertEquals(
"33",
message.getInt32ToStringField().get(3));
141 assertEquals(3,
message.getInt32ToBytesField().size());
142 assertEquals(
TestUtil.toBytes(
"11"),
message.getInt32ToBytesField().get(1));
143 assertEquals(
TestUtil.toBytes(
"22"),
message.getInt32ToBytesField().get(2));
144 assertEquals(
TestUtil.toBytes(
"33"),
message.getInt32ToBytesField().get(3));
146 assertEquals(3,
message.getInt32ToEnumField().size());
147 assertEquals(TestMap.EnumValue.FOO,
message.getInt32ToEnumField().get(1));
148 assertEquals(TestMap.EnumValue.BAR,
message.getInt32ToEnumField().get(2));
149 assertEquals(TestMap.EnumValue.BAZ,
message.getInt32ToEnumField().get(3));
151 assertEquals(3,
message.getInt32ToMessageField().size());
152 assertEquals(11,
message.getInt32ToMessageField().get(1).getValue());
153 assertEquals(22,
message.getInt32ToMessageField().get(2).getValue());
154 assertEquals(33,
message.getInt32ToMessageField().get(3).getValue());
156 assertEquals(3,
message.getStringToInt32Field().size());
157 assertEquals(11,
message.getStringToInt32Field().get(
"1").intValue());
158 assertEquals(22,
message.getStringToInt32Field().get(
"2").intValue());
159 assertEquals(33,
message.getStringToInt32Field().get(
"3").intValue());
163 builder.getMutableInt32ToInt32Field().put(1, 111);
164 builder.getMutableInt32ToInt32Field().remove(2);
165 builder.getMutableInt32ToInt32Field().put(4, 44);
167 builder.getMutableInt32ToStringField().put(1,
"111");
168 builder.getMutableInt32ToStringField().remove(2);
169 builder.getMutableInt32ToStringField().put(4,
"44");
171 builder.getMutableInt32ToBytesField().put(1,
TestUtil.toBytes(
"111"));
172 builder.getMutableInt32ToBytesField().remove(2);
173 builder.getMutableInt32ToBytesField().put(4,
TestUtil.toBytes(
"44"));
175 builder.getMutableInt32ToEnumField().put(1, TestMap.EnumValue.BAR);
176 builder.getMutableInt32ToEnumField().remove(2);
177 builder.getMutableInt32ToEnumField().put(4, TestMap.EnumValue.QUX);
179 builder.getMutableInt32ToMessageField().put(
180 1, MessageValue.newBuilder().setValue(111).build());
181 builder.getMutableInt32ToMessageField().remove(2);
182 builder.getMutableInt32ToMessageField().put(
183 4, MessageValue.newBuilder().setValue(44).build());
185 builder.getMutableStringToInt32Field().put(
"1", 111);
186 builder.getMutableStringToInt32Field().remove(
"2");
187 builder.getMutableStringToInt32Field().put(
"4", 44);
192 .putInt32ToInt32Field(1, 111)
193 .removeInt32ToInt32Field(2)
194 .putInt32ToInt32Field(4, 44)
195 .putInt32ToStringField(1,
"111")
196 .removeInt32ToStringField(2)
197 .putInt32ToStringField(4,
"44")
198 .putInt32ToBytesField(1,
TestUtil.toBytes(
"111"))
199 .removeInt32ToBytesField(2)
200 .putInt32ToBytesField(4,
TestUtil.toBytes(
"44"))
201 .putInt32ToEnumField(1, TestMap.EnumValue.BAR)
202 .removeInt32ToEnumField(2)
203 .putInt32ToEnumField(4, TestMap.EnumValue.QUX)
204 .putInt32ToMessageField(1, MessageValue.newBuilder().setValue(111).build())
205 .removeInt32ToMessageField(2)
206 .putInt32ToMessageField(4, MessageValue.newBuilder().setValue(44).build())
207 .putStringToInt32Field(
"1", 111)
208 .removeStringToInt32Field(
"2")
209 .putStringToInt32Field(
"4", 44);
213 TestMap.Builder usingMutableMapBuilder = TestMap.newBuilder();
215 TestMap usingMutableMap = usingMutableMapBuilder.build();
218 TestMap.Builder usingAccessorsBuilder = TestMap.newBuilder();
220 TestMap usingAccessors = usingAccessorsBuilder.build();
223 assertEquals(usingAccessors, usingMutableMap);
225 usingMutableMapBuilder = usingMutableMap.toBuilder();
227 usingMutableMap = usingMutableMapBuilder.build();
230 usingAccessorsBuilder = usingAccessors.toBuilder();
232 usingAccessors = usingAccessorsBuilder.build();
235 assertEquals(usingAccessors, usingMutableMap);
239 assertEquals(3,
message.getInt32ToInt32Field().size());
240 assertEquals(111,
message.getInt32ToInt32Field().get(1).intValue());
241 assertEquals(33,
message.getInt32ToInt32Field().get(3).intValue());
242 assertEquals(44,
message.getInt32ToInt32Field().get(4).intValue());
244 assertEquals(3,
message.getInt32ToStringField().size());
245 assertEquals(
"111",
message.getInt32ToStringField().get(1));
246 assertEquals(
"33",
message.getInt32ToStringField().get(3));
247 assertEquals(
"44",
message.getInt32ToStringField().get(4));
249 assertEquals(3,
message.getInt32ToBytesField().size());
250 assertEquals(
TestUtil.toBytes(
"111"),
message.getInt32ToBytesField().get(1));
251 assertEquals(
TestUtil.toBytes(
"33"),
message.getInt32ToBytesField().get(3));
252 assertEquals(
TestUtil.toBytes(
"44"),
message.getInt32ToBytesField().get(4));
254 assertEquals(3,
message.getInt32ToEnumField().size());
255 assertEquals(TestMap.EnumValue.BAR,
message.getInt32ToEnumField().get(1));
256 assertEquals(TestMap.EnumValue.BAZ,
message.getInt32ToEnumField().get(3));
257 assertEquals(TestMap.EnumValue.QUX,
message.getInt32ToEnumField().get(4));
259 assertEquals(3,
message.getInt32ToMessageField().size());
260 assertEquals(111,
message.getInt32ToMessageField().get(1).getValue());
261 assertEquals(33,
message.getInt32ToMessageField().get(3).getValue());
262 assertEquals(44,
message.getInt32ToMessageField().get(4).getValue());
264 assertEquals(3,
message.getStringToInt32Field().size());
265 assertEquals(111,
message.getStringToInt32Field().get(
"1").intValue());
266 assertEquals(33,
message.getStringToInt32Field().get(
"3").intValue());
267 assertEquals(44,
message.getStringToInt32Field().get(
"4").intValue());
271 assertEquals(0, testMapOrBuilder.getInt32ToInt32Field().size());
272 assertEquals(0, testMapOrBuilder.getInt32ToInt32FieldCount());
273 assertEquals(0, testMapOrBuilder.getInt32ToStringField().size());
274 assertEquals(0, testMapOrBuilder.getInt32ToStringFieldCount());
275 assertEquals(0, testMapOrBuilder.getInt32ToBytesField().size());
276 assertEquals(0, testMapOrBuilder.getInt32ToBytesFieldCount());
277 assertEquals(0, testMapOrBuilder.getInt32ToEnumField().size());
278 assertEquals(0, testMapOrBuilder.getInt32ToEnumFieldCount());
279 assertEquals(0, testMapOrBuilder.getInt32ToMessageField().size());
280 assertEquals(0, testMapOrBuilder.getInt32ToMessageFieldCount());
281 assertEquals(0, testMapOrBuilder.getStringToInt32Field().size());
282 assertEquals(0, testMapOrBuilder.getStringToInt32FieldCount());
286 TestMap.Builder builder = TestMap.newBuilder();
296 assertImmutable(testMapOrBuilder.getInt32ToInt32Field(), 1, 2);
297 assertImmutable(testMapOrBuilder.getInt32ToStringField(), 1,
"2");
298 assertImmutable(testMapOrBuilder.getInt32ToBytesField(), 1,
TestUtil.toBytes(
"2"));
299 assertImmutable(testMapOrBuilder.getInt32ToEnumField(), 1, TestMap.EnumValue.FOO);
301 testMapOrBuilder.getInt32ToMessageField(), 1, MessageValue.getDefaultInstance());
302 assertImmutable(testMapOrBuilder.getStringToInt32Field(),
"1", 2);
305 private <K, V>
void assertImmutable(Map<K, V>
map,
K key, V
value) {
309 }
catch (UnsupportedOperationException e) {
315 TestMap.Builder builder = TestMap.newBuilder();
316 Map<Integer, Integer> intMap = builder.getMutableInt32ToInt32Field();
318 assertEquals(
newMap(1, 2), builder.build().getInt32ToInt32Field());
322 }
catch (UnsupportedOperationException e) {
325 assertEquals(
newMap(1, 2), builder.getInt32ToInt32Field());
326 builder.getMutableInt32ToInt32Field().put(2, 3);
327 assertEquals(
newMap(1, 2, 2, 3), builder.getInt32ToInt32Field());
329 Map<Integer, TestMap.EnumValue> enumMap = builder.getMutableInt32ToEnumField();
330 enumMap.put(1, TestMap.EnumValue.BAR);
331 assertEquals(
newMap(1, TestMap.EnumValue.BAR), builder.build().getInt32ToEnumField());
333 enumMap.put(2, TestMap.EnumValue.FOO);
335 }
catch (UnsupportedOperationException e) {
338 assertEquals(
newMap(1, TestMap.EnumValue.BAR), builder.getInt32ToEnumField());
339 builder.getMutableInt32ToEnumField().put(2, TestMap.EnumValue.FOO);
341 newMap(1, TestMap.EnumValue.BAR, 2, TestMap.EnumValue.FOO),
342 builder.getInt32ToEnumField());
344 Map<Integer, String> stringMap = builder.getMutableInt32ToStringField();
345 stringMap.put(1,
"1");
346 assertEquals(
newMap(1,
"1"), builder.build().getInt32ToStringField());
348 stringMap.put(2,
"2");
350 }
catch (UnsupportedOperationException e) {
353 assertEquals(
newMap(1,
"1"), builder.getInt32ToStringField());
354 builder.getMutableInt32ToStringField().put(2,
"2");
357 builder.getInt32ToStringField());
359 Map<Integer, TestMap.MessageValue> messageMap = builder.getMutableInt32ToMessageField();
360 messageMap.put(1, TestMap.MessageValue.getDefaultInstance());
361 assertEquals(
newMap(1, TestMap.MessageValue.getDefaultInstance()),
362 builder.build().getInt32ToMessageField());
364 messageMap.put(2, TestMap.MessageValue.getDefaultInstance());
366 }
catch (UnsupportedOperationException e) {
369 assertEquals(
newMap(1, TestMap.MessageValue.getDefaultInstance()),
370 builder.getInt32ToMessageField());
371 builder.getMutableInt32ToMessageField().put(2, TestMap.MessageValue.getDefaultInstance());
373 newMap(1, TestMap.MessageValue.getDefaultInstance(),
374 2, TestMap.MessageValue.getDefaultInstance()),
375 builder.getInt32ToMessageField());
379 TestMap.Builder builder = TestMap.newBuilder();
380 Map<Integer, Integer> intMap = builder.getMutableInt32ToInt32Field();
382 assertEquals(
newMap(1, 2), builder.build().getInt32ToInt32Field());
386 }
catch (UnsupportedOperationException e) {
390 intMap.entrySet().remove(
new Object());
392 }
catch (UnsupportedOperationException e) {
396 intMap.entrySet().iterator().remove();
398 }
catch (UnsupportedOperationException e) {
402 intMap.keySet().remove(
new Object());
404 }
catch (UnsupportedOperationException e) {
408 intMap.values().remove(
new Object());
410 }
catch (UnsupportedOperationException e) {
414 intMap.values().iterator().remove();
416 }
catch (UnsupportedOperationException e) {
419 assertEquals(
newMap(1, 2), intMap);
420 assertEquals(
newMap(1, 2), builder.getInt32ToInt32Field());
421 assertEquals(
newMap(1, 2), builder.build().getInt32ToInt32Field());
424 private static <K, V> Map<K, V>
newMap(
K key1, V value1) {
425 Map<K, V>
map =
new HashMap<K, V>();
426 map.put(key1, value1);
430 private static <K, V> Map<K, V>
newMap(
K key1, V value1,
K key2, V value2) {
431 Map<K, V>
map =
new HashMap<K, V>();
432 map.put(key1, value1);
433 map.put(key2, value2);
438 TestMap.Builder builder = TestMap.newBuilder();
439 TestMap
message = builder.build();
460 TestMap.Builder sourceBuilder = TestMap.newBuilder();
462 TestMap
source = sourceBuilder.build();
465 TestMap.Builder destination = TestMap.newBuilder();
469 assertEquals(3, destination.getInt32ToEnumFieldCount());
473 TestMap.Builder builder = TestMap.newBuilder();
476 builder.putInt32ToStringField(1,
null);
478 }
catch (NullPointerException e) {
483 builder.putInt32ToBytesField(1,
null);
485 }
catch (NullPointerException e) {
490 builder.putInt32ToEnumField(1,
null);
492 }
catch (NullPointerException e) {
497 builder.putInt32ToMessageField(1,
null);
499 }
catch (NullPointerException e) {
504 builder.putStringToInt32Field(
null, 1);
506 }
catch (NullPointerException e) {
512 TestMap.Builder builder = TestMap.newBuilder();
514 TestMap
message = builder.build();
515 assertEquals(
message.getSerializedSize(),
message.toByteString().size());
522 assertEquals(
message.getSerializedSize(),
message.toByteString().size());
529 assertEquals(
message.getSerializedSize(),
message.toByteString().size());
535 ByteArrayOutputStream byteArrayOutputStream =
new ByteArrayOutputStream();
537 bizarroMap.writeTo(
output);
539 return TestMap.parser().parseFrom(
ByteString.copyFrom(byteArrayOutputStream.toByteArray()));
544 String stringKey =
"a string key";
548 assertEquals(0,
map.getInt32ToInt32FieldOrDefault(5, -1));
550 map =
tryParseTestMap(BizarroTestMap.newBuilder().putInt32ToStringField(stringKey, 5).build());
551 assertEquals(
"",
map.getInt32ToStringFieldOrDefault(0,
null));
553 map =
tryParseTestMap(BizarroTestMap.newBuilder().putInt32ToBytesField(stringKey, 5).build());
558 assertEquals(TestMap.EnumValue.FOO,
map.getInt32ToEnumFieldOrDefault(0,
null));
566 assertTrue(
map.getInt32ToMessageField().isEmpty());
571 BizarroTestMap.newBuilder().putStringToInt32Field(stringKey,
bytes).build());
572 assertEquals(0,
map.getStringToInt32FieldOrDefault(stringKey, -1));
576 TestMap.Builder builder = TestMap.newBuilder();
578 TestMap
message = builder.build();
580 TestMap.Builder other = TestMap.newBuilder();
591 TestMap.Builder b1 = TestMap.newBuilder();
592 b1.putInt32ToInt32Field(1, 2);
593 b1.putInt32ToInt32Field(3, 4);
594 b1.putInt32ToInt32Field(5, 6);
595 TestMap m1 = b1.build();
597 TestMap.Builder b2 = TestMap.newBuilder();
598 b2.putInt32ToInt32Field(5, 6);
599 b2.putInt32ToInt32Field(1, 2);
600 b2.putInt32ToInt32Field(3, 4);
601 TestMap m2 = b2.build();
603 assertEquals(m1, m2);
604 assertEquals(m1.hashCode(), m2.hashCode());
607 b2.putInt32ToInt32Field(1, 0);
609 assertFalse(m1.equals(m2));
618 return TestMap.getDescriptor().findFieldByName(
name);
635 for (Object entry : (List<?>)
message.getField(
field)) {
655 FieldDescriptor keyField = entryBuilder.getDescriptorForType().findFieldByName(
"key");
656 FieldDescriptor valueField = entryBuilder.getDescriptorForType().findFieldByName(
"value");
657 entryBuilder.setField(keyField,
key);
658 entryBuilder.setField(valueField,
value);
659 return entryBuilder.build();
663 List<Message> entryList =
new ArrayList<Message>();
664 for (
Map.Entry<?, ?> entry :
values.entrySet()) {
665 entryList.add(
newMapEntry(builder,
name, entry.getKey(), entry.getValue()));
668 builder.setField(
field, entryList);
671 private static <K, V> Map<K, V>
mapForValues(
K key1, V value1,
K key2, V value2) {
672 Map<K, V>
map =
new HashMap<K, V>();
673 map.put(key1, value1);
674 map.put(key2, value2);
680 TestMap.Builder builder =
682 .putInt32ToInt32Field(1, 2)
683 .putInt32ToInt32Field(3, 4)
684 .putInt32ToMessageField(11, MessageValue.newBuilder().setValue(22).build())
685 .putInt32ToMessageField(33, MessageValue.newBuilder().setValue(44).build());
686 TestMap
message = builder.build();
692 "int32_to_message_field",
694 11, MessageValue.newBuilder().setValue(22).build(),
695 33, MessageValue.newBuilder().setValue(44).build()));
698 builder.clearField(
f(
"int32_to_int32_field"));
699 builder.clearField(
f(
"int32_to_message_field"));
701 assertEquals(0,
message.getInt32ToInt32Field().size());
702 assertEquals(0,
message.getInt32ToMessageField().size());
708 "int32_to_message_field",
710 111, MessageValue.newBuilder().setValue(222).build(),
711 333, MessageValue.newBuilder().setValue(444).build()));
713 assertEquals(22,
message.getInt32ToInt32Field().get(11).intValue());
714 assertEquals(44,
message.getInt32ToInt32Field().get(33).intValue());
715 assertEquals(222,
message.getInt32ToMessageField().get(111).getValue());
716 assertEquals(444,
message.getInt32ToMessageField().get(333).getValue());
719 builder.addRepeatedField(
720 f(
"int32_to_int32_field"),
newMapEntry(builder,
"int32_to_int32_field", 55, 66));
721 builder.addRepeatedField(
722 f(
"int32_to_message_field"),
725 "int32_to_message_field",
727 MessageValue.newBuilder().setValue(666).build()));
729 assertEquals(66,
message.getInt32ToInt32Field().get(55).intValue());
730 assertEquals(666,
message.getInt32ToMessageField().get(555).getValue());
733 builder.addRepeatedField(
734 f(
"int32_to_int32_field"),
newMapEntry(builder,
"int32_to_int32_field", 55, 55));
735 builder.addRepeatedField(
736 f(
"int32_to_message_field"),
739 "int32_to_message_field",
741 MessageValue.newBuilder().setValue(555).build()));
743 assertEquals(55,
message.getInt32ToInt32Field().get(55).intValue());
744 assertEquals(555,
message.getInt32ToMessageField().get(555).getValue());
747 for (
int i = 0;
i < builder.getRepeatedFieldCount(
f(
"int32_to_int32_field"));
i++) {
755 builder.setRepeatedField(
f(
"int32_to_int32_field"),
i, mapEntryBuilder.build());
758 assertEquals(11,
message.getInt32ToInt32Field().get(22).intValue());
759 assertEquals(33,
message.getInt32ToInt32Field().get(44).intValue());
760 assertEquals(55,
message.getInt32ToInt32Field().get(55).intValue());
765 TestMap.Builder builder = TestMap.newBuilder();
767 TestMap
message = builder.build();
771 builder = TestMap.newBuilder();
779 TestMap.Builder builder = TestMap.newBuilder();
781 TestMap
message = builder.build();
787 assertEquals(
message, dynamicMessage);
828 assertEquals(m1, m2);
832 b2.setRepeatedField(
field, 0,
newMapEntry(b1,
"int32_to_int32_field", 0, 0));
834 assertFalse(m1.
equals(m2));
840 TestUnknownEnumValue.Builder builder =
841 TestUnknownEnumValue.newBuilder().putInt32ToInt32Field(1, 1).putInt32ToInt32Field(2, 54321);
847 assertEquals(1,
message.getInt32ToEnumField().size());
848 assertEquals(TestMap.EnumValue.BAR,
message.getInt32ToEnumField().get(1));
850 assertFalse(
message.getUnknownFields().asMap().isEmpty());
853 TestUnknownEnumValue messageWithUnknownEnums = TestUnknownEnumValue.parseFrom(
data);
854 assertEquals(2, messageWithUnknownEnums.getInt32ToInt32Field().size());
855 assertEquals(1, messageWithUnknownEnums.getInt32ToInt32Field().get(1).intValue());
856 assertEquals(54321, messageWithUnknownEnums.getInt32ToInt32Field().get(2).intValue());
860 TestMap.Builder builder = TestMap.newBuilder();
861 builder.putRequiredMessageMap(0, MessageWithRequiredFields.newBuilder().buildPartial());
862 TestMap
message = builder.buildPartial();
863 assertFalse(
message.isInitialized());
865 builder.putRequiredMessageMap(0, MessageWithRequiredFields.newBuilder().setValue(1).build());
867 assertTrue(
message.isInitialized());
871 TestRecursiveMap.Builder builder = TestRecursiveMap.newBuilder();
872 builder.putRecursiveMapField(1, TestRecursiveMap.newBuilder().setValue(2).build());
873 builder.putRecursiveMapField(3, TestRecursiveMap.newBuilder().setValue(4).build());
876 TestRecursiveMap
message = TestRecursiveMap.parseFrom(
data);
877 assertEquals(2,
message.getRecursiveMapField().get(1).getValue());
878 assertEquals(4,
message.getRecursiveMapField().get(3).getValue());
882 TestMap.Builder builder = TestMap.newBuilder();
884 TestMap
message = builder.build();
887 Arrays.asList(
"1",
"2",
"3"),
888 new ArrayList<String>(
message.getStringToInt32Field().keySet()));
892 TestMap.Builder builder = TestMap.newBuilder();
899 assertTrue(testMapOrBuilder.containsInt32ToInt32Field(1));
900 assertTrue(testMapOrBuilder.containsInt32ToInt32Field(2));
901 assertTrue(testMapOrBuilder.containsInt32ToInt32Field(3));
902 assertFalse(testMapOrBuilder.containsInt32ToInt32Field(-1));
904 assertTrue(testMapOrBuilder.containsInt32ToStringField(1));
905 assertTrue(testMapOrBuilder.containsInt32ToStringField(2));
906 assertTrue(testMapOrBuilder.containsInt32ToStringField(3));
907 assertFalse(testMapOrBuilder.containsInt32ToStringField(-1));
909 assertTrue(testMapOrBuilder.containsInt32ToBytesField(1));
910 assertTrue(testMapOrBuilder.containsInt32ToBytesField(2));
911 assertTrue(testMapOrBuilder.containsInt32ToBytesField(3));
912 assertFalse(testMapOrBuilder.containsInt32ToBytesField(-1));
914 assertTrue(testMapOrBuilder.containsInt32ToEnumField(1));
915 assertTrue(testMapOrBuilder.containsInt32ToEnumField(2));
916 assertTrue(testMapOrBuilder.containsInt32ToEnumField(3));
917 assertFalse(testMapOrBuilder.containsInt32ToEnumField(-1));
919 assertTrue(testMapOrBuilder.containsInt32ToMessageField(1));
920 assertTrue(testMapOrBuilder.containsInt32ToMessageField(2));
921 assertTrue(testMapOrBuilder.containsInt32ToMessageField(3));
922 assertFalse(testMapOrBuilder.containsInt32ToMessageField(-1));
924 assertTrue(testMapOrBuilder.containsStringToInt32Field(
"1"));
925 assertTrue(testMapOrBuilder.containsStringToInt32Field(
"2"));
926 assertTrue(testMapOrBuilder.containsStringToInt32Field(
"3"));
927 assertFalse(testMapOrBuilder.containsStringToInt32Field(
"-1"));
931 TestMap.Builder builder = TestMap.newBuilder();
937 TestMap
message = builder.build();
940 builder =
message.toBuilder().putInt32ToInt32Field(4, 44);
941 assertEquals(4, builder.getInt32ToInt32FieldCount());
942 assertEquals(4, builder.build().getInt32ToInt32FieldCount());
945 builder.putInt32ToInt32Field(4, 44);
946 assertEquals(4, builder.getInt32ToInt32FieldCount());
950 assertEquals(expectedCount, testMapOrBuilder.getInt32ToInt32FieldCount());
951 assertEquals(expectedCount, testMapOrBuilder.getInt32ToStringFieldCount());
952 assertEquals(expectedCount, testMapOrBuilder.getInt32ToBytesFieldCount());
953 assertEquals(expectedCount, testMapOrBuilder.getInt32ToEnumFieldCount());
954 assertEquals(expectedCount, testMapOrBuilder.getInt32ToMessageFieldCount());
955 assertEquals(expectedCount, testMapOrBuilder.getStringToInt32FieldCount());
959 TestMap.Builder builder = TestMap.newBuilder();
967 assertEquals(11, testMapOrBuilder.getInt32ToInt32FieldOrDefault(1, -11));
968 assertEquals(-11, testMapOrBuilder.getInt32ToInt32FieldOrDefault(-1, -11));
970 assertEquals(
"11", testMapOrBuilder.getInt32ToStringFieldOrDefault(1,
"-11"));
971 assertNull(
"-11", testMapOrBuilder.getInt32ToStringFieldOrDefault(-1,
null));
973 assertEquals(
TestUtil.toBytes(
"11"), testMapOrBuilder.getInt32ToBytesFieldOrDefault(1,
null));
974 assertNull(testMapOrBuilder.getInt32ToBytesFieldOrDefault(-1,
null));
976 assertEquals(TestMap.EnumValue.FOO, testMapOrBuilder.getInt32ToEnumFieldOrDefault(1,
null));
977 assertNull(testMapOrBuilder.getInt32ToEnumFieldOrDefault(-1,
null));
980 MessageValue.newBuilder().setValue(11).build(),
981 testMapOrBuilder.getInt32ToMessageFieldOrDefault(1,
null));
982 assertNull(testMapOrBuilder.getInt32ToMessageFieldOrDefault(-1,
null));
984 assertEquals(11, testMapOrBuilder.getStringToInt32FieldOrDefault(
"1", -11));
985 assertEquals(-11, testMapOrBuilder.getStringToInt32FieldOrDefault(
"-1", -11));
988 testMapOrBuilder.getStringToInt32FieldOrDefault(
null, -11);
990 }
catch (NullPointerException e) {
996 TestMap.Builder builder = TestMap.newBuilder();
1004 assertEquals(11, testMapOrBuilder.getInt32ToInt32FieldOrThrow(1));
1006 testMapOrBuilder.getInt32ToInt32FieldOrThrow(-1);
1008 }
catch (IllegalArgumentException e) {
1012 assertEquals(
"11", testMapOrBuilder.getInt32ToStringFieldOrThrow(1));
1015 testMapOrBuilder.getInt32ToStringFieldOrThrow(-1);
1017 }
catch (IllegalArgumentException e) {
1021 assertEquals(
TestUtil.toBytes(
"11"), testMapOrBuilder.getInt32ToBytesFieldOrThrow(1));
1024 testMapOrBuilder.getInt32ToBytesFieldOrThrow(-1);
1026 }
catch (IllegalArgumentException e) {
1030 assertEquals(TestMap.EnumValue.FOO, testMapOrBuilder.getInt32ToEnumFieldOrThrow(1));
1032 testMapOrBuilder.getInt32ToEnumFieldOrThrow(-1);
1034 }
catch (IllegalArgumentException e) {
1039 MessageValue.newBuilder().setValue(11).build(),
1040 testMapOrBuilder.getInt32ToMessageFieldOrThrow(1));
1042 testMapOrBuilder.getInt32ToMessageFieldOrThrow(-1);
1044 }
catch (IllegalArgumentException e) {
1048 assertEquals(11, testMapOrBuilder.getStringToInt32FieldOrThrow(
"1"));
1050 testMapOrBuilder.getStringToInt32FieldOrThrow(
"-1");
1052 }
catch (IllegalArgumentException e) {
1057 testMapOrBuilder.getStringToInt32FieldOrThrow(
null);
1059 }
catch (NullPointerException e) {
1065 TestMap.Builder builder = TestMap.newBuilder();
1066 builder.putInt32ToInt32Field(1, 11);
1067 assertEquals(11, builder.getInt32ToInt32FieldOrThrow(1));
1069 builder.putInt32ToStringField(1,
"a");
1070 assertEquals(
"a", builder.getInt32ToStringFieldOrThrow(1));
1072 builder.putInt32ToStringField(1,
null);
1074 }
catch (NullPointerException e) {
1078 builder.putInt32ToBytesField(1,
TestUtil.toBytes(
"11"));
1079 assertEquals(
TestUtil.toBytes(
"11"), builder.getInt32ToBytesFieldOrThrow(1));
1081 builder.putInt32ToBytesField(1,
null);
1083 }
catch (NullPointerException e) {
1087 builder.putInt32ToEnumField(1, TestMap.EnumValue.FOO);
1088 assertEquals(TestMap.EnumValue.FOO, builder.getInt32ToEnumFieldOrThrow(1));
1090 builder.putInt32ToEnumField(1,
null);
1092 }
catch (NullPointerException e) {
1096 builder.putStringToInt32Field(
"a", 1);
1097 assertEquals(1, builder.getStringToInt32FieldOrThrow(
"a"));
1099 builder.putStringToInt32Field(
null, -1);
1100 }
catch (NullPointerException e) {
1106 TestMap.Builder builder = TestMap.newBuilder();
1108 assertEquals(11, builder.getInt32ToInt32FieldOrThrow(1));
1109 for (
int times = 0; times < 2; times++) {
1110 builder.removeInt32ToInt32Field(1);
1111 assertEquals(-1, builder.getInt32ToInt32FieldOrDefault(1, -1));
1114 assertEquals(
"11", builder.getInt32ToStringFieldOrThrow(1));
1115 for (
int times = 0; times < 2; times++) {
1116 builder.removeInt32ToStringField(1);
1117 assertNull(builder.getInt32ToStringFieldOrDefault(1,
null));
1120 assertEquals(
TestUtil.toBytes(
"11"), builder.getInt32ToBytesFieldOrThrow(1));
1121 for (
int times = 0; times < 2; times++) {
1122 builder.removeInt32ToBytesField(1);
1123 assertNull(builder.getInt32ToBytesFieldOrDefault(1,
null));
1126 assertEquals(TestMap.EnumValue.FOO, builder.getInt32ToEnumFieldOrThrow(1));
1127 for (
int times = 0; times < 2; times++) {
1128 builder.removeInt32ToEnumField(1);
1129 assertNull(builder.getInt32ToEnumFieldOrDefault(1,
null));
1132 assertEquals(11, builder.getStringToInt32FieldOrThrow(
"1"));
1133 for (
int times = 0; times < 2; times++) {
1134 builder.removeStringToInt32Field(
"1");
1135 assertEquals(-1, builder.getStringToInt32FieldOrDefault(
"1", -1));
1139 builder.removeStringToInt32Field(
null);
1141 }
catch (NullPointerException e) {
1150 map_test.RedactAllTypes.getDefaultInstance()
1151 .getDescriptorForType()
1154 map_test.Message1.Builder builder =
1155 map_test.Message1.newBuilder();
1156 builder.putMapField(
"key",
true);
1157 map_test.Message1
message = builder.build();
1161 message.getDescriptorForType().findFieldByName(
"map_field"), 0);
1166 ReservedAsMapField.newBuilder().build();
1167 ReservedAsMapFieldWithEnumValue.newBuilder().build();
1171 TestMap.Builder builder = TestMap.newBuilder();
1174 TestMap
message = builder.build();
1175 assertEquals(
message.getStringToInt32Field(),
message.getStringToInt32FieldMap());
1176 assertEquals(
message.getInt32ToBytesField(),
message.getInt32ToBytesFieldMap());
1177 assertEquals(
message.getInt32ToEnumField(),
message.getInt32ToEnumFieldMap());
1178 assertEquals(
message.getInt32ToMessageField(),
message.getInt32ToMessageFieldMap());