Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(164)

Side by Side Diff: third_party/protobuf/java/core/src/test/java/com/google/protobuf/MapForProto2LiteTest.java

Issue 2590803003: Revert "third_party/protobuf: Update to HEAD (83d681ee2c)" (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Protocol Buffers - Google's data interchange format 1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2008 Google Inc. All rights reserved. 2 // Copyright 2008 Google Inc. All rights reserved.
3 // https://developers.google.com/protocol-buffers/ 3 // https://developers.google.com/protocol-buffers/
4 // 4 //
5 // Redistribution and use in source and binary forms, with or without 5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are 6 // modification, are permitted provided that the following conditions are
7 // met: 7 // met:
8 // 8 //
9 // * Redistributions of source code must retain the above copyright 9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer. 10 // notice, this list of conditions and the following disclaimer.
(...skipping 12 matching lines...) Expand all
23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 30
31 package com.google.protobuf; 31 package com.google.protobuf;
32 32
33 import map_lite_test.MapForProto2TestProto.BizarroTestMap;
34 import map_lite_test.MapForProto2TestProto.TestMap; 33 import map_lite_test.MapForProto2TestProto.TestMap;
35 import map_lite_test.MapForProto2TestProto.TestMap.MessageValue; 34 import map_lite_test.MapForProto2TestProto.TestMap.MessageValue;
36 import map_lite_test.MapForProto2TestProto.TestMapOrBuilder;
37 import map_lite_test.MapForProto2TestProto.TestUnknownEnumValue; 35 import map_lite_test.MapForProto2TestProto.TestUnknownEnumValue;
38 import java.io.ByteArrayOutputStream; 36
39 import java.io.IOException; 37 import junit.framework.TestCase;
38
40 import java.util.ArrayList; 39 import java.util.ArrayList;
41 import java.util.Arrays; 40 import java.util.Arrays;
42 import java.util.HashMap; 41 import java.util.HashMap;
43 import java.util.Map; 42 import java.util.Map;
44 import junit.framework.TestCase;
45 43
46 /** 44 /**
47 * Unit tests for map fields. 45 * Unit tests for map fields.
48 */ 46 */
49 public final class MapForProto2LiteTest extends TestCase { 47 public class MapForProto2LiteTest extends TestCase {
48 private void setMapValues(TestMap.Builder builder) {
49 builder.getMutableInt32ToInt32Field().put(1, 11);
50 builder.getMutableInt32ToInt32Field().put(2, 22);
51 builder.getMutableInt32ToInt32Field().put(3, 33);
50 52
51 private void setMapValues(TestMap.Builder builder) { 53 builder.getMutableInt32ToStringField().put(1, "11");
52 builder 54 builder.getMutableInt32ToStringField().put(2, "22");
53 .putInt32ToInt32Field(1, 11) 55 builder.getMutableInt32ToStringField().put(3, "33");
54 .putInt32ToInt32Field(2, 22) 56
55 .putInt32ToInt32Field(3, 33) 57 builder.getMutableInt32ToBytesField().put(1, TestUtil.toBytes("11"));
56 58 builder.getMutableInt32ToBytesField().put(2, TestUtil.toBytes("22"));
57 .putInt32ToStringField(1, "11") 59 builder.getMutableInt32ToBytesField().put(3, TestUtil.toBytes("33"));
58 .putInt32ToStringField(2, "22") 60
59 .putInt32ToStringField(3, "33") 61 builder.getMutableInt32ToEnumField().put(1, TestMap.EnumValue.FOO);
60 62 builder.getMutableInt32ToEnumField().put(2, TestMap.EnumValue.BAR);
61 .putInt32ToBytesField(1, TestUtil.toBytes("11")) 63 builder.getMutableInt32ToEnumField().put(3, TestMap.EnumValue.BAZ);
62 .putInt32ToBytesField(2, TestUtil.toBytes("22")) 64
63 .putInt32ToBytesField(3, TestUtil.toBytes("33")) 65 builder.getMutableInt32ToMessageField().put(
64 66 1, MessageValue.newBuilder().setValue(11).build());
65 .putInt32ToEnumField(1, TestMap.EnumValue.FOO) 67 builder.getMutableInt32ToMessageField().put(
66 .putInt32ToEnumField(2, TestMap.EnumValue.BAR) 68 2, MessageValue.newBuilder().setValue(22).build());
67 .putInt32ToEnumField(3, TestMap.EnumValue.BAZ) 69 builder.getMutableInt32ToMessageField().put(
68 70 3, MessageValue.newBuilder().setValue(33).build());
69 .putInt32ToMessageField(1, MessageValue.newBuilder().setValue(11).build( )) 71
70 .putInt32ToMessageField(2, MessageValue.newBuilder().setValue(22).build( )) 72 builder.getMutableStringToInt32Field().put("1", 11);
71 .putInt32ToMessageField(3, MessageValue.newBuilder().setValue(33).build( )) 73 builder.getMutableStringToInt32Field().put("2", 22);
72 74 builder.getMutableStringToInt32Field().put("3", 33);
73 .putStringToInt32Field("1", 11)
74 .putStringToInt32Field("2", 22)
75 .putStringToInt32Field("3", 33);
76 }
77
78 public void testSetMapValues() {
79 TestMap.Builder mapBuilder = TestMap.newBuilder();
80 setMapValues(mapBuilder);
81 TestMap map = mapBuilder.build();
82 assertMapValuesSet(map);
83 } 75 }
84 76
85 private void copyMapValues(TestMap source, TestMap.Builder destination) { 77 private void copyMapValues(TestMap source, TestMap.Builder destination) {
86 destination 78 destination
87 .putAllInt32ToInt32Field(source.getInt32ToInt32Field()) 79 .putAllInt32ToInt32Field(source.getInt32ToInt32Field())
88 .putAllInt32ToStringField(source.getInt32ToStringField()) 80 .putAllInt32ToStringField(source.getInt32ToStringField())
89 .putAllInt32ToBytesField(source.getInt32ToBytesField()) 81 .putAllInt32ToBytesField(source.getInt32ToBytesField())
90 .putAllInt32ToEnumField(source.getInt32ToEnumField()) 82 .putAllInt32ToEnumField(source.getInt32ToEnumField())
91 .putAllInt32ToMessageField(source.getInt32ToMessageField()) 83 .putAllInt32ToMessageField(source.getInt32ToMessageField())
92 .putAllStringToInt32Field(source.getStringToInt32Field()); 84 .putAllStringToInt32Field(source.getStringToInt32Field());
93 } 85 }
94 86
95 private void assertMapValuesSet(TestMap message) { 87 private void assertMapValuesSet(TestMap message) {
96 assertEquals(3, message.getInt32ToInt32Field().size()); 88 assertEquals(3, message.getInt32ToInt32Field().size());
97 assertEquals(11, message.getInt32ToInt32Field().get(1).intValue()); 89 assertEquals(11, message.getInt32ToInt32Field().get(1).intValue());
98 assertEquals(22, message.getInt32ToInt32Field().get(2).intValue()); 90 assertEquals(22, message.getInt32ToInt32Field().get(2).intValue());
99 assertEquals(33, message.getInt32ToInt32Field().get(3).intValue()); 91 assertEquals(33, message.getInt32ToInt32Field().get(3).intValue());
100 92
101 assertEquals(3, message.getInt32ToStringField().size()); 93 assertEquals(3, message.getInt32ToStringField().size());
102 assertEquals("11", message.getInt32ToStringField().get(1)); 94 assertEquals("11", message.getInt32ToStringField().get(1));
103 assertEquals("22", message.getInt32ToStringField().get(2)); 95 assertEquals("22", message.getInt32ToStringField().get(2));
104 assertEquals("33", message.getInt32ToStringField().get(3)); 96 assertEquals("33", message.getInt32ToStringField().get(3));
105 97
106 assertEquals(3, message.getInt32ToBytesField().size()); 98 assertEquals(3, message.getInt32ToBytesField().size());
107 assertEquals(TestUtil.toBytes("11"), message.getInt32ToBytesField().get(1)); 99 assertEquals(TestUtil.toBytes("11"), message.getInt32ToBytesField().get(1));
108 assertEquals(TestUtil.toBytes("22"), message.getInt32ToBytesField().get(2)); 100 assertEquals(TestUtil.toBytes("22"), message.getInt32ToBytesField().get(2));
109 assertEquals(TestUtil.toBytes("33"), message.getInt32ToBytesField().get(3)); 101 assertEquals(TestUtil.toBytes("33"), message.getInt32ToBytesField().get(3));
110 102
111 assertEquals(3, message.getInt32ToEnumField().size()); 103 assertEquals(3, message.getInt32ToEnumField().size());
112 assertEquals(TestMap.EnumValue.FOO, message.getInt32ToEnumField().get(1)); 104 assertEquals(TestMap.EnumValue.FOO, message.getInt32ToEnumField().get(1));
113 assertEquals(TestMap.EnumValue.BAR, message.getInt32ToEnumField().get(2)); 105 assertEquals(TestMap.EnumValue.BAR, message.getInt32ToEnumField().get(2));
114 assertEquals(TestMap.EnumValue.BAZ, message.getInt32ToEnumField().get(3)); 106 assertEquals(TestMap.EnumValue.BAZ, message.getInt32ToEnumField().get(3));
115 107
116 assertEquals(3, message.getInt32ToMessageField().size()); 108 assertEquals(3, message.getInt32ToMessageField().size());
117 assertEquals(11, message.getInt32ToMessageField().get(1).getValue()); 109 assertEquals(11, message.getInt32ToMessageField().get(1).getValue());
118 assertEquals(22, message.getInt32ToMessageField().get(2).getValue()); 110 assertEquals(22, message.getInt32ToMessageField().get(2).getValue());
119 assertEquals(33, message.getInt32ToMessageField().get(3).getValue()); 111 assertEquals(33, message.getInt32ToMessageField().get(3).getValue());
120 112
121 assertEquals(3, message.getStringToInt32Field().size()); 113 assertEquals(3, message.getStringToInt32Field().size());
122 assertEquals(11, message.getStringToInt32Field().get("1").intValue()); 114 assertEquals(11, message.getStringToInt32Field().get("1").intValue());
123 assertEquals(22, message.getStringToInt32Field().get("2").intValue()); 115 assertEquals(22, message.getStringToInt32Field().get("2").intValue());
124 assertEquals(33, message.getStringToInt32Field().get("3").intValue()); 116 assertEquals(33, message.getStringToInt32Field().get("3").intValue());
125 } 117 }
126 118
127 private void updateMapValues(TestMap.Builder builder) { 119 private void updateMapValues(TestMap.Builder builder) {
128 builder 120 builder.getMutableInt32ToInt32Field().put(1, 111);
129 .putInt32ToInt32Field(1, 111) 121 builder.getMutableInt32ToInt32Field().remove(2);
130 .removeInt32ToInt32Field(2) 122 builder.getMutableInt32ToInt32Field().put(4, 44);
131 .putInt32ToInt32Field(4, 44)
132 123
133 .putInt32ToStringField(1, "111") 124 builder.getMutableInt32ToStringField().put(1, "111");
134 .removeInt32ToStringField(2) 125 builder.getMutableInt32ToStringField().remove(2);
135 .putInt32ToStringField(4, "44") 126 builder.getMutableInt32ToStringField().put(4, "44");
136 127
137 .putInt32ToBytesField(1, TestUtil.toBytes("111")) 128 builder.getMutableInt32ToBytesField().put(1, TestUtil.toBytes("111"));
138 .removeInt32ToBytesField(2) 129 builder.getMutableInt32ToBytesField().remove(2);
139 .putInt32ToBytesField(4, TestUtil.toBytes("44")) 130 builder.getMutableInt32ToBytesField().put(4, TestUtil.toBytes("44"));
140 131
141 .putInt32ToEnumField(1, TestMap.EnumValue.BAR) 132 builder.getMutableInt32ToEnumField().put(1, TestMap.EnumValue.BAR);
142 .removeInt32ToEnumField(2) 133 builder.getMutableInt32ToEnumField().remove(2);
143 .putInt32ToEnumField(4, TestMap.EnumValue.QUX) 134 builder.getMutableInt32ToEnumField().put(4, TestMap.EnumValue.QUX);
144 135
145 .putInt32ToMessageField(1, MessageValue.newBuilder().setValue(111).build ()) 136 builder.getMutableInt32ToMessageField().put(
146 .removeInt32ToMessageField(2) 137 1, MessageValue.newBuilder().setValue(111).build());
147 .putInt32ToMessageField(4, MessageValue.newBuilder().setValue(44).build( )) 138 builder.getMutableInt32ToMessageField().remove(2);
148 139 builder.getMutableInt32ToMessageField().put(
149 .putStringToInt32Field("1", 111) 140 4, MessageValue.newBuilder().setValue(44).build());
150 .removeStringToInt32Field("2") 141
151 .putStringToInt32Field("4", 44); 142 builder.getMutableStringToInt32Field().put("1", 111);
152 } 143 builder.getMutableStringToInt32Field().remove("2");
153 144 builder.getMutableStringToInt32Field().put("4", 44);
154 public void testUpdateMapValues() {
155 TestMap.Builder mapBuilder = TestMap.newBuilder();
156 setMapValues(mapBuilder);
157 TestMap map = mapBuilder.build();
158 assertMapValuesSet(map);
159
160 mapBuilder = map.toBuilder();
161 updateMapValues(mapBuilder);
162 map = mapBuilder.build();
163 assertMapValuesUpdated(map);
164 } 145 }
165 146
166 private void assertMapValuesUpdated(TestMap message) { 147 private void assertMapValuesUpdated(TestMap message) {
167 assertEquals(3, message.getInt32ToInt32Field().size()); 148 assertEquals(3, message.getInt32ToInt32Field().size());
168 assertEquals(111, message.getInt32ToInt32Field().get(1).intValue()); 149 assertEquals(111, message.getInt32ToInt32Field().get(1).intValue());
169 assertEquals(33, message.getInt32ToInt32Field().get(3).intValue()); 150 assertEquals(33, message.getInt32ToInt32Field().get(3).intValue());
170 assertEquals(44, message.getInt32ToInt32Field().get(4).intValue()); 151 assertEquals(44, message.getInt32ToInt32Field().get(4).intValue());
171 152
172 assertEquals(3, message.getInt32ToStringField().size()); 153 assertEquals(3, message.getInt32ToStringField().size());
173 assertEquals("111", message.getInt32ToStringField().get(1)); 154 assertEquals("111", message.getInt32ToStringField().get(1));
174 assertEquals("33", message.getInt32ToStringField().get(3)); 155 assertEquals("33", message.getInt32ToStringField().get(3));
175 assertEquals("44", message.getInt32ToStringField().get(4)); 156 assertEquals("44", message.getInt32ToStringField().get(4));
176 157
177 assertEquals(3, message.getInt32ToBytesField().size()); 158 assertEquals(3, message.getInt32ToBytesField().size());
178 assertEquals(TestUtil.toBytes("111"), message.getInt32ToBytesField().get(1)) ; 159 assertEquals(TestUtil.toBytes("111"), message.getInt32ToBytesField().get(1)) ;
179 assertEquals(TestUtil.toBytes("33"), message.getInt32ToBytesField().get(3)); 160 assertEquals(TestUtil.toBytes("33"), message.getInt32ToBytesField().get(3));
180 assertEquals(TestUtil.toBytes("44"), message.getInt32ToBytesField().get(4)); 161 assertEquals(TestUtil.toBytes("44"), message.getInt32ToBytesField().get(4));
181 162
182 assertEquals(3, message.getInt32ToEnumField().size()); 163 assertEquals(3, message.getInt32ToEnumField().size());
183 assertEquals(TestMap.EnumValue.BAR, message.getInt32ToEnumField().get(1)); 164 assertEquals(TestMap.EnumValue.BAR, message.getInt32ToEnumField().get(1));
184 assertEquals(TestMap.EnumValue.BAZ, message.getInt32ToEnumField().get(3)); 165 assertEquals(TestMap.EnumValue.BAZ, message.getInt32ToEnumField().get(3));
185 assertEquals(TestMap.EnumValue.QUX, message.getInt32ToEnumField().get(4)); 166 assertEquals(TestMap.EnumValue.QUX, message.getInt32ToEnumField().get(4));
186 167
187 assertEquals(3, message.getInt32ToMessageField().size()); 168 assertEquals(3, message.getInt32ToMessageField().size());
188 assertEquals(111, message.getInt32ToMessageField().get(1).getValue()); 169 assertEquals(111, message.getInt32ToMessageField().get(1).getValue());
189 assertEquals(33, message.getInt32ToMessageField().get(3).getValue()); 170 assertEquals(33, message.getInt32ToMessageField().get(3).getValue());
190 assertEquals(44, message.getInt32ToMessageField().get(4).getValue()); 171 assertEquals(44, message.getInt32ToMessageField().get(4).getValue());
191 172
192 assertEquals(3, message.getStringToInt32Field().size()); 173 assertEquals(3, message.getStringToInt32Field().size());
193 assertEquals(111, message.getStringToInt32Field().get("1").intValue()); 174 assertEquals(111, message.getStringToInt32Field().get("1").intValue());
194 assertEquals(33, message.getStringToInt32Field().get("3").intValue()); 175 assertEquals(33, message.getStringToInt32Field().get("3").intValue());
195 assertEquals(44, message.getStringToInt32Field().get("4").intValue()); 176 assertEquals(44, message.getStringToInt32Field().get("4").intValue());
196 } 177 }
197 178
198 private void assertMapValuesCleared(TestMapOrBuilder testMapOrBuilder) { 179 private void assertMapValuesCleared(TestMap message) {
199 assertEquals(0, testMapOrBuilder.getInt32ToInt32Field().size()); 180 assertEquals(0, message.getInt32ToInt32Field().size());
200 assertEquals(0, testMapOrBuilder.getInt32ToInt32FieldCount()); 181 assertEquals(0, message.getInt32ToStringField().size());
201 assertEquals(0, testMapOrBuilder.getInt32ToStringField().size()); 182 assertEquals(0, message.getInt32ToBytesField().size());
202 assertEquals(0, testMapOrBuilder.getInt32ToStringFieldCount()); 183 assertEquals(0, message.getInt32ToEnumField().size());
203 assertEquals(0, testMapOrBuilder.getInt32ToBytesField().size()); 184 assertEquals(0, message.getInt32ToMessageField().size());
204 assertEquals(0, testMapOrBuilder.getInt32ToBytesFieldCount()); 185 assertEquals(0, message.getStringToInt32Field().size());
205 assertEquals(0, testMapOrBuilder.getInt32ToEnumField().size());
206 assertEquals(0, testMapOrBuilder.getInt32ToEnumFieldCount());
207 assertEquals(0, testMapOrBuilder.getInt32ToMessageField().size());
208 assertEquals(0, testMapOrBuilder.getInt32ToMessageFieldCount());
209 assertEquals(0, testMapOrBuilder.getStringToInt32Field().size());
210 assertEquals(0, testMapOrBuilder.getStringToInt32FieldCount());
211 } 186 }
212 187
213 public void testSanityCopyOnWrite() throws InvalidProtocolBufferException { 188 public void testSanityCopyOnWrite() throws InvalidProtocolBufferException {
214 // Since builders are implemented as a thin wrapper around a message 189 // Since builders are implemented as a thin wrapper around a message
215 // instance, we attempt to verify that we can't cause the builder to modify 190 // instance, we attempt to verify that we can't cause the builder to modify
216 // a produced message. 191 // a produced message.
217 192
218 TestMap.Builder builder = TestMap.newBuilder(); 193 TestMap.Builder builder = TestMap.newBuilder();
219 TestMap message = builder.build(); 194 TestMap message = builder.build();
220 builder.putInt32ToInt32Field(1, 2); 195 Map<Integer, Integer> intMap = builder.getMutableInt32ToInt32Field();
196 intMap.put(1, 2);
221 assertTrue(message.getInt32ToInt32Field().isEmpty()); 197 assertTrue(message.getInt32ToInt32Field().isEmpty());
222 message = builder.build(); 198 message = builder.build();
223 assertEquals(newMap(1, 2), message.getInt32ToInt32Field());
224 assertEquals(newMap(1, 2), builder.getInt32ToInt32Field());
225 builder.putInt32ToInt32Field(2, 3);
226 assertEquals(newMap(1, 2), message.getInt32ToInt32Field());
227 assertEquals(newMap(1, 2, 2, 3), builder.getInt32ToInt32Field());
228 }
229
230 public void testGetMapIsImmutable() {
231 TestMap.Builder builder = TestMap.newBuilder();
232 assertMapsAreImmutable(builder);
233 assertMapsAreImmutable(builder.build());
234
235 setMapValues(builder);
236 assertMapsAreImmutable(builder);
237 assertMapsAreImmutable(builder.build());
238 }
239
240 private void assertMapsAreImmutable(TestMapOrBuilder testMapOrBuilder) {
241 assertImmutable(testMapOrBuilder.getInt32ToInt32Field(), 1, 2);
242 assertImmutable(testMapOrBuilder.getInt32ToStringField(), 1, "2");
243 assertImmutable(testMapOrBuilder.getInt32ToBytesField(), 1, TestUtil.toBytes ("2"));
244 assertImmutable(testMapOrBuilder.getInt32ToEnumField(), 1, TestMap.EnumValue .FOO);
245 assertImmutable(
246 testMapOrBuilder.getInt32ToMessageField(), 1, MessageValue.getDefaultIns tance());
247 assertImmutable(testMapOrBuilder.getStringToInt32Field(), "1", 2);
248 }
249
250 private <K, V> void assertImmutable(Map<K, V> map, K key, V value) {
251 try { 199 try {
252 map.put(key, value); 200 intMap.put(2, 3);
253 fail(); 201 fail();
254 } catch (UnsupportedOperationException e) { 202 } catch (UnsupportedOperationException e) {
255 // expected 203 // expected
256 } 204 }
257 if (!map.isEmpty()) { 205 assertEquals(newMap(1, 2), message.getInt32ToInt32Field());
258 try { 206 assertEquals(newMap(1, 2), builder.getInt32ToInt32Field());
259 map.entrySet().remove(map.entrySet().iterator().next()); 207 builder.getMutableInt32ToInt32Field().put(2, 3);
260 fail(); 208 assertEquals(newMap(1, 2), message.getInt32ToInt32Field());
261 } catch (UnsupportedOperationException e) { 209 assertEquals(newMap(1, 2, 2, 3), builder.getInt32ToInt32Field());
262 // expected 210 }
263 } 211
212 public void testMutableMapLifecycle() {
213 TestMap.Builder builder = TestMap.newBuilder();
214 Map<Integer, Integer> intMap = builder.getMutableInt32ToInt32Field();
215 intMap.put(1, 2);
216 assertEquals(newMap(1, 2), builder.build().getInt32ToInt32Field());
217 try {
218 intMap.put(2, 3);
219 fail();
220 } catch (UnsupportedOperationException e) {
221 // expected
264 } 222 }
265 }
266
267 public void testMutableMapLifecycle() {
268 TestMap.Builder builder = TestMap.newBuilder()
269 .putInt32ToInt32Field(1, 2);
270 assertEquals(newMap(1, 2), builder.build().getInt32ToInt32Field());
271 assertEquals(newMap(1, 2), builder.getInt32ToInt32Field()); 223 assertEquals(newMap(1, 2), builder.getInt32ToInt32Field());
272 builder.putInt32ToInt32Field(2, 3); 224 builder.getMutableInt32ToInt32Field().put(2, 3);
273 assertEquals(newMap(1, 2, 2, 3), builder.getInt32ToInt32Field()); 225 assertEquals(newMap(1, 2, 2, 3), builder.getInt32ToInt32Field());
274 226
275 builder.putInt32ToEnumField(1, TestMap.EnumValue.BAR); 227 Map<Integer, TestMap.EnumValue> enumMap = builder.getMutableInt32ToEnumField ();
228 enumMap.put(1, TestMap.EnumValue.BAR);
276 assertEquals(newMap(1, TestMap.EnumValue.BAR), builder.build().getInt32ToEnu mField()); 229 assertEquals(newMap(1, TestMap.EnumValue.BAR), builder.build().getInt32ToEnu mField());
230 try {
231 enumMap.put(2, TestMap.EnumValue.FOO);
232 fail();
233 } catch (UnsupportedOperationException e) {
234 // expected
235 }
277 assertEquals(newMap(1, TestMap.EnumValue.BAR), builder.getInt32ToEnumField() ); 236 assertEquals(newMap(1, TestMap.EnumValue.BAR), builder.getInt32ToEnumField() );
278 builder.putInt32ToEnumField(2, TestMap.EnumValue.FOO); 237 builder.getMutableInt32ToEnumField().put(2, TestMap.EnumValue.FOO);
279 assertEquals( 238 assertEquals(
280 newMap(1, TestMap.EnumValue.BAR, 2, TestMap.EnumValue.FOO), 239 newMap(1, TestMap.EnumValue.BAR, 2, TestMap.EnumValue.FOO),
281 builder.getInt32ToEnumField()); 240 builder.getInt32ToEnumField());
282 241
283 builder.putInt32ToStringField(1, "1"); 242 Map<Integer, String> stringMap = builder.getMutableInt32ToStringField();
243 stringMap.put(1, "1");
284 assertEquals(newMap(1, "1"), builder.build().getInt32ToStringField()); 244 assertEquals(newMap(1, "1"), builder.build().getInt32ToStringField());
245 try {
246 stringMap.put(2, "2");
247 fail();
248 } catch (UnsupportedOperationException e) {
249 // expected
250 }
285 assertEquals(newMap(1, "1"), builder.getInt32ToStringField()); 251 assertEquals(newMap(1, "1"), builder.getInt32ToStringField());
286 builder.putInt32ToStringField(2, "2"); 252 builder.getMutableInt32ToStringField().put(2, "2");
287 assertEquals(newMap(1, "1", 2, "2"), builder.getInt32ToStringField()); 253 assertEquals(
288 254 newMap(1, "1", 2, "2"),
289 builder.putInt32ToMessageField(1, TestMap.MessageValue.getDefaultInstance()) ; 255 builder.getInt32ToStringField());
256
257 Map<Integer, TestMap.MessageValue> messageMap = builder.getMutableInt32ToMes sageField();
258 messageMap.put(1, TestMap.MessageValue.getDefaultInstance());
290 assertEquals(newMap(1, TestMap.MessageValue.getDefaultInstance()), 259 assertEquals(newMap(1, TestMap.MessageValue.getDefaultInstance()),
291 builder.build().getInt32ToMessageField()); 260 builder.build().getInt32ToMessageField());
261 try {
262 messageMap.put(2, TestMap.MessageValue.getDefaultInstance());
263 fail();
264 } catch (UnsupportedOperationException e) {
265 // expected
266 }
292 assertEquals(newMap(1, TestMap.MessageValue.getDefaultInstance()), 267 assertEquals(newMap(1, TestMap.MessageValue.getDefaultInstance()),
293 builder.getInt32ToMessageField()); 268 builder.getInt32ToMessageField());
294 builder.putInt32ToMessageField(2, TestMap.MessageValue.getDefaultInstance()) ; 269 builder.getMutableInt32ToMessageField().put(2, TestMap.MessageValue.getDefau ltInstance());
295 assertEquals( 270 assertEquals(
296 newMap(1, TestMap.MessageValue.getDefaultInstance(), 271 newMap(1, TestMap.MessageValue.getDefaultInstance(),
297 2, TestMap.MessageValue.getDefaultInstance()), 272 2, TestMap.MessageValue.getDefaultInstance()),
298 builder.getInt32ToMessageField()); 273 builder.getInt32ToMessageField());
299 } 274 }
300 275
276 public void testMutableMapLifecycle_collections() {
277 TestMap.Builder builder = TestMap.newBuilder();
278 Map<Integer, Integer> intMap = builder.getMutableInt32ToInt32Field();
279 intMap.put(1, 2);
280 assertEquals(newMap(1, 2), builder.build().getInt32ToInt32Field());
281 try {
282 intMap.remove(2);
283 fail();
284 } catch (UnsupportedOperationException e) {
285 // expected
286 }
287 try {
288 intMap.entrySet().remove(new Object());
289 fail();
290 } catch (UnsupportedOperationException e) {
291 // expected
292 }
293 try {
294 intMap.entrySet().iterator().remove();
295 fail();
296 } catch (UnsupportedOperationException e) {
297 // expected
298 }
299 try {
300 intMap.keySet().remove(new Object());
301 fail();
302 } catch (UnsupportedOperationException e) {
303 // expected
304 }
305 try {
306 intMap.values().remove(new Object());
307 fail();
308 } catch (UnsupportedOperationException e) {
309 // expected
310 }
311 try {
312 intMap.values().iterator().remove();
313 fail();
314 } catch (UnsupportedOperationException e) {
315 // expected
316 }
317 assertEquals(newMap(1, 2), intMap);
318 assertEquals(newMap(1, 2), builder.getInt32ToInt32Field());
319 assertEquals(newMap(1, 2), builder.build().getInt32ToInt32Field());
320 }
321
301 public void testGettersAndSetters() throws Exception { 322 public void testGettersAndSetters() throws Exception {
302 TestMap.Builder builder = TestMap.newBuilder(); 323 TestMap.Builder builder = TestMap.newBuilder();
303 TestMap message = builder.build(); 324 TestMap message = builder.build();
304 assertMapValuesCleared(message); 325 assertMapValuesCleared(message);
305 326
306 builder = message.toBuilder(); 327 builder = message.toBuilder();
307 setMapValues(builder); 328 setMapValues(builder);
308 message = builder.build(); 329 message = builder.build();
309 assertMapValuesSet(message); 330 assertMapValuesSet(message);
310 331
311 builder = message.toBuilder(); 332 builder = message.toBuilder();
312 updateMapValues(builder); 333 updateMapValues(builder);
313 message = builder.build(); 334 message = builder.build();
314 assertMapValuesUpdated(message); 335 assertMapValuesUpdated(message);
315 336
316 builder = message.toBuilder(); 337 builder = message.toBuilder();
317 builder.clear(); 338 builder.clear();
318 assertMapValuesCleared(builder);
319 message = builder.build(); 339 message = builder.build();
320 assertMapValuesCleared(message); 340 assertMapValuesCleared(message);
321 } 341 }
322 342
323 public void testPutAll() throws Exception { 343 public void testPutAll() throws Exception {
324 TestMap.Builder sourceBuilder = TestMap.newBuilder(); 344 TestMap.Builder sourceBuilder = TestMap.newBuilder();
325 setMapValues(sourceBuilder); 345 setMapValues(sourceBuilder);
326 TestMap source = sourceBuilder.build(); 346 TestMap source = sourceBuilder.build();
327 assertMapValuesSet(source);
328 347
329 TestMap.Builder destination = TestMap.newBuilder(); 348 TestMap.Builder destination = TestMap.newBuilder();
330 copyMapValues(source, destination); 349 copyMapValues(source, destination);
331 assertMapValuesSet(destination.build()); 350 assertMapValuesSet(destination.build());
332 } 351 }
333 352
334 public void testPutChecksNullKeysAndValues() throws Exception {
335 TestMap.Builder builder = TestMap.newBuilder();
336
337 try {
338 builder.putInt32ToStringField(1, null);
339 fail();
340 } catch (NullPointerException e) {
341 // expected.
342 }
343
344 try {
345 builder.putInt32ToBytesField(1, null);
346 fail();
347 } catch (NullPointerException e) {
348 // expected.
349 }
350
351 try {
352 builder.putInt32ToEnumField(1, null);
353 fail();
354 } catch (NullPointerException e) {
355 // expected.
356 }
357
358 try {
359 builder.putInt32ToMessageField(1, null);
360 fail();
361 } catch (NullPointerException e) {
362 // expected.
363 }
364
365 try {
366 builder.putStringToInt32Field(null, 1);
367 fail();
368 } catch (NullPointerException e) {
369 // expected.
370 }
371 }
372
373 public void testSerializeAndParse() throws Exception { 353 public void testSerializeAndParse() throws Exception {
374 TestMap.Builder builder = TestMap.newBuilder(); 354 TestMap.Builder builder = TestMap.newBuilder();
375 setMapValues(builder); 355 setMapValues(builder);
376 TestMap message = builder.build(); 356 TestMap message = builder.build();
377 assertEquals(message.getSerializedSize(), message.toByteString().size()); 357 assertEquals(message.getSerializedSize(), message.toByteString().size());
378 message = TestMap.parser().parseFrom(message.toByteString()); 358 message = TestMap.parser().parseFrom(message.toByteString());
379 assertMapValuesSet(message); 359 assertMapValuesSet(message);
380 360
381 builder = message.toBuilder(); 361 builder = message.toBuilder();
382 updateMapValues(builder); 362 updateMapValues(builder);
383 message = builder.build(); 363 message = builder.build();
384 assertEquals(message.getSerializedSize(), message.toByteString().size()); 364 assertEquals(message.getSerializedSize(), message.toByteString().size());
385 message = TestMap.parser().parseFrom(message.toByteString()); 365 message = TestMap.parser().parseFrom(message.toByteString());
386 assertMapValuesUpdated(message); 366 assertMapValuesUpdated(message);
387 367
388 builder = message.toBuilder(); 368 builder = message.toBuilder();
389 builder.clear(); 369 builder.clear();
390 message = builder.build(); 370 message = builder.build();
391 assertEquals(message.getSerializedSize(), message.toByteString().size()); 371 assertEquals(message.getSerializedSize(), message.toByteString().size());
392 message = TestMap.parser().parseFrom(message.toByteString()); 372 message = TestMap.parser().parseFrom(message.toByteString());
393 assertMapValuesCleared(message); 373 assertMapValuesCleared(message);
394 } 374 }
395 375
396 private TestMap tryParseTestMap(BizarroTestMap bizarroMap) throws IOException {
397 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
398 CodedOutputStream output = CodedOutputStream.newInstance(byteArrayOutputStre am);
399 bizarroMap.writeTo(output);
400 output.flush();
401 return TestMap.parser().parseFrom(ByteString.copyFrom(byteArrayOutputStream. toByteArray()));
402 }
403
404 public void testParseError() throws Exception {
405 ByteString bytes = TestUtil.toBytes("SOME BYTES");
406 String stringKey = "a string key";
407
408 TestMap map = tryParseTestMap(BizarroTestMap.newBuilder()
409 .putInt32ToInt32Field(5, bytes)
410 .build());
411 assertEquals(map.getInt32ToInt32FieldOrDefault(5, -1), 0);
412
413 map = tryParseTestMap(BizarroTestMap.newBuilder()
414 .putInt32ToStringField(stringKey, 5)
415 .build());
416 assertEquals(map.getInt32ToStringFieldOrDefault(0, null), "");
417
418 map = tryParseTestMap(BizarroTestMap.newBuilder()
419 .putInt32ToBytesField(stringKey, 5)
420 .build());
421 assertEquals(map.getInt32ToBytesFieldOrDefault(0, null), ByteString.EMPTY);
422
423 map = tryParseTestMap(BizarroTestMap.newBuilder()
424 .putInt32ToEnumField(stringKey, bytes)
425 .build());
426 assertEquals(map.getInt32ToEnumFieldOrDefault(0, null), TestMap.EnumValue.FO O);
427
428 try {
429 tryParseTestMap(BizarroTestMap.newBuilder()
430 .putInt32ToMessageField(stringKey, bytes)
431 .build());
432 fail();
433 } catch (InvalidProtocolBufferException expected) {
434 assertTrue(expected.getUnfinishedMessage() instanceof TestMap);
435 map = (TestMap) expected.getUnfinishedMessage();
436 assertTrue(map.getInt32ToMessageField().isEmpty());
437 }
438
439 map = tryParseTestMap(BizarroTestMap.newBuilder()
440 .putStringToInt32Field(stringKey, bytes)
441 .build());
442 assertEquals(map.getStringToInt32FieldOrDefault(stringKey, -1), 0);
443 }
444
445 public void testMergeFrom() throws Exception { 376 public void testMergeFrom() throws Exception {
446 TestMap.Builder builder = TestMap.newBuilder(); 377 TestMap.Builder builder = TestMap.newBuilder();
447 setMapValues(builder); 378 setMapValues(builder);
448 TestMap message = builder.build(); 379 TestMap message = builder.build();
449 380
450 TestMap.Builder other = TestMap.newBuilder(); 381 TestMap.Builder other = TestMap.newBuilder();
451 other.mergeFrom(message); 382 other.mergeFrom(message);
452 assertMapValuesSet(other.build()); 383 assertMapValuesSet(other.build());
453 } 384 }
454 385
455 public void testEqualsAndHashCode() throws Exception { 386 public void testEqualsAndHashCode() throws Exception {
456 // Test that generated equals() and hashCode() will disregard the order 387 // Test that generated equals() and hashCode() will disregard the order
457 // of map entries when comparing/hashing map fields. 388 // of map entries when comparing/hashing map fields.
458 389
459 // We can't control the order of elements in a HashMap. The best we can do 390 // We can't control the order of elements in a HashMap. The best we can do
460 // here is to add elements in different order. 391 // here is to add elements in different order.
461 TestMap.Builder b1 = TestMap.newBuilder() 392 TestMap.Builder b1 = TestMap.newBuilder();
462 .putInt32ToInt32Field(1, 2) 393 b1.getMutableInt32ToInt32Field().put(1, 2);
463 .putInt32ToInt32Field(3, 4) 394 b1.getMutableInt32ToInt32Field().put(3, 4);
464 .putInt32ToInt32Field(5, 6); 395 b1.getMutableInt32ToInt32Field().put(5, 6);
465 TestMap m1 = b1.build(); 396 TestMap m1 = b1.build();
466 397
467 TestMap.Builder b2 = TestMap.newBuilder() 398 TestMap.Builder b2 = TestMap.newBuilder();
468 .putInt32ToInt32Field(5, 6) 399 b2.getMutableInt32ToInt32Field().put(5, 6);
469 .putInt32ToInt32Field(1, 2) 400 b2.getMutableInt32ToInt32Field().put(1, 2);
470 .putInt32ToInt32Field(3, 4); 401 b2.getMutableInt32ToInt32Field().put(3, 4);
471 TestMap m2 = b2.build(); 402 TestMap m2 = b2.build();
472 403
473 assertEquals(m1, m2); 404 assertEquals(m1, m2);
474 assertEquals(m1.hashCode(), m2.hashCode()); 405 assertEquals(m1.hashCode(), m2.hashCode());
475 406
476 // Make sure we did compare map fields. 407 // Make sure we did compare map fields.
477 b2.putInt32ToInt32Field(1, 0); 408 b2.getMutableInt32ToInt32Field().put(1, 0);
478 m2 = b2.build(); 409 m2 = b2.build();
479 assertFalse(m1.equals(m2)); 410 assertFalse(m1.equals(m2));
480 // Don't check m1.hashCode() != m2.hashCode() because it's not guaranteed 411 // Don't check m1.hashCode() != m2.hashCode() because it's not guaranteed
481 // to be different. 412 // to be different.
482 } 413 }
483 414
484 public void testUnknownEnumValues() throws Exception { 415 public void testUnknownEnumValues() throws Exception {
485 TestUnknownEnumValue.Builder builder = TestUnknownEnumValue.newBuilder() 416 TestUnknownEnumValue.Builder builder =
486 .putInt32ToInt32Field(1, 1) 417 TestUnknownEnumValue.newBuilder();
487 .putInt32ToInt32Field(2, 54321); 418 builder.getMutableInt32ToInt32Field().put(1, 1);
419 builder.getMutableInt32ToInt32Field().put(2, 54321);
488 ByteString data = builder.build().toByteString(); 420 ByteString data = builder.build().toByteString();
489 421
490 TestMap message = TestMap.parseFrom(data); 422 TestMap message = TestMap.parseFrom(data);
491 // Entries with unknown enum values will be stored into UnknownFieldSet so 423 // Entries with unknown enum values will be stored into UnknownFieldSet so
492 // there is only one entry in the map. 424 // there is only one entry in the map.
493 assertEquals(1, message.getInt32ToEnumField().size()); 425 assertEquals(1, message.getInt32ToEnumField().size());
494 assertEquals(TestMap.EnumValue.BAR, message.getInt32ToEnumField().get(1)); 426 assertEquals(TestMap.EnumValue.BAR, message.getInt32ToEnumField().get(1));
495 // Serializing and parsing should preserve the unknown entry. 427 // Serializing and parsing should preserve the unknown entry.
496 data = message.toByteString(); 428 data = message.toByteString();
497 TestUnknownEnumValue messageWithUnknownEnums = 429 TestUnknownEnumValue messageWithUnknownEnums =
498 TestUnknownEnumValue.parseFrom(data); 430 TestUnknownEnumValue.parseFrom(data);
499 assertEquals(2, messageWithUnknownEnums.getInt32ToInt32Field().size()); 431 assertEquals(2, messageWithUnknownEnums.getInt32ToInt32Field().size());
500 assertEquals(1, messageWithUnknownEnums.getInt32ToInt32Field().get(1).intVal ue()); 432 assertEquals(1, messageWithUnknownEnums.getInt32ToInt32Field().get(1).intVal ue());
501 assertEquals(54321, messageWithUnknownEnums.getInt32ToInt32Field().get(2).in tValue()); 433 assertEquals(54321, messageWithUnknownEnums.getInt32ToInt32Field().get(2).in tValue());
502 } 434 }
503 435
436
504 public void testIterationOrder() throws Exception { 437 public void testIterationOrder() throws Exception {
505 TestMap.Builder builder = TestMap.newBuilder(); 438 TestMap.Builder builder = TestMap.newBuilder();
506 setMapValues(builder); 439 setMapValues(builder);
507 TestMap message = builder.build(); 440 TestMap message = builder.build();
508 441
509 assertEquals(Arrays.asList("1", "2", "3"), 442 assertEquals(Arrays.asList("1", "2", "3"),
510 new ArrayList<String>(message.getStringToInt32Field().keySet())); 443 new ArrayList<String>(message.getStringToInt32Field().keySet()));
511 } 444 }
512 445
513 private static <K, V> Map<K, V> newMap(K key1, V value1) { 446 private static <K, V> Map<K, V> newMap(K key1, V value1) {
514 Map<K, V> map = new HashMap<K, V>(); 447 Map<K, V> map = new HashMap<K, V>();
515 map.put(key1, value1); 448 map.put(key1, value1);
516 return map; 449 return map;
517 } 450 }
518 451
519 private static <K, V> Map<K, V> newMap(K key1, V value1, K key2, V value2) { 452 private static <K, V> Map<K, V> newMap(K key1, V value1, K key2, V value2) {
520 Map<K, V> map = new HashMap<K, V>(); 453 Map<K, V> map = new HashMap<K, V>();
521 map.put(key1, value1); 454 map.put(key1, value1);
522 map.put(key2, value2); 455 map.put(key2, value2);
523 return map; 456 return map;
524 } 457 }
525
526 public void testGetMap() {
527 TestMap.Builder builder = TestMap.newBuilder();
528 setMapValues(builder);
529 TestMap message = builder.build();
530 assertEquals(
531 message.getStringToInt32Field(),
532 message.getStringToInt32FieldMap());
533 assertEquals(
534 message.getInt32ToBytesField(),
535 message.getInt32ToBytesFieldMap());
536 assertEquals(
537 message.getInt32ToEnumField(),
538 message.getInt32ToEnumFieldMap());
539 assertEquals(
540 message.getInt32ToMessageField(),
541 message.getInt32ToMessageFieldMap());
542 }
543
544 public void testContains() {
545 TestMap.Builder builder = TestMap.newBuilder();
546 setMapValues(builder);
547 assertMapContainsSetValues(builder);
548 assertMapContainsSetValues(builder.build());
549 }
550
551 private void assertMapContainsSetValues(TestMapOrBuilder testMapOrBuilder) {
552 assertTrue(testMapOrBuilder.containsInt32ToInt32Field(1));
553 assertTrue(testMapOrBuilder.containsInt32ToInt32Field(2));
554 assertTrue(testMapOrBuilder.containsInt32ToInt32Field(3));
555 assertFalse(testMapOrBuilder.containsInt32ToInt32Field(-1));
556
557 assertTrue(testMapOrBuilder.containsInt32ToStringField(1));
558 assertTrue(testMapOrBuilder.containsInt32ToStringField(2));
559 assertTrue(testMapOrBuilder.containsInt32ToStringField(3));
560 assertFalse(testMapOrBuilder.containsInt32ToStringField(-1));
561
562 assertTrue(testMapOrBuilder.containsInt32ToBytesField(1));
563 assertTrue(testMapOrBuilder.containsInt32ToBytesField(2));
564 assertTrue(testMapOrBuilder.containsInt32ToBytesField(3));
565 assertFalse(testMapOrBuilder.containsInt32ToBytesField(-1));
566
567 assertTrue(testMapOrBuilder.containsInt32ToEnumField(1));
568 assertTrue(testMapOrBuilder.containsInt32ToEnumField(2));
569 assertTrue(testMapOrBuilder.containsInt32ToEnumField(3));
570 assertFalse(testMapOrBuilder.containsInt32ToEnumField(-1));
571
572 assertTrue(testMapOrBuilder.containsInt32ToMessageField(1));
573 assertTrue(testMapOrBuilder.containsInt32ToMessageField(2));
574 assertTrue(testMapOrBuilder.containsInt32ToMessageField(3));
575 assertFalse(testMapOrBuilder.containsInt32ToMessageField(-1));
576
577 assertTrue(testMapOrBuilder.containsStringToInt32Field("1"));
578 assertTrue(testMapOrBuilder.containsStringToInt32Field("2"));
579 assertTrue(testMapOrBuilder.containsStringToInt32Field("3"));
580 assertFalse(testMapOrBuilder.containsStringToInt32Field("-1"));
581 }
582
583 public void testCount() {
584 TestMap.Builder builder = TestMap.newBuilder();
585 assertMapCounts(0, builder);
586
587 setMapValues(builder);
588 assertMapCounts(3, builder);
589
590 TestMap message = builder.build();
591 assertMapCounts(3, message);
592
593 builder = message.toBuilder().putInt32ToInt32Field(4, 44);
594 assertEquals(4, builder.getInt32ToInt32FieldCount());
595 assertEquals(4, builder.build().getInt32ToInt32FieldCount());
596
597 // already present - should be unchanged
598 builder.putInt32ToInt32Field(4, 44);
599 assertEquals(4, builder.getInt32ToInt32FieldCount());
600 }
601
602 private void assertMapCounts(int expectedCount, TestMapOrBuilder testMapOrBuil der) {
603 assertEquals(expectedCount, testMapOrBuilder.getInt32ToInt32FieldCount());
604 assertEquals(expectedCount, testMapOrBuilder.getInt32ToStringFieldCount());
605 assertEquals(expectedCount, testMapOrBuilder.getInt32ToBytesFieldCount());
606 assertEquals(expectedCount, testMapOrBuilder.getInt32ToEnumFieldCount());
607 assertEquals(expectedCount, testMapOrBuilder.getInt32ToMessageFieldCount());
608 assertEquals(expectedCount, testMapOrBuilder.getStringToInt32FieldCount());
609 }
610
611 public void testGetOrDefault() {
612 TestMap.Builder builder = TestMap.newBuilder();
613 assertMapCounts(0, builder);
614 setMapValues(builder);
615 doTestGetOrDefault(builder);
616 doTestGetOrDefault(builder.build());
617 }
618
619 public void doTestGetOrDefault(TestMapOrBuilder testMapOrBuilder) {
620 assertEquals(11, testMapOrBuilder.getInt32ToInt32FieldOrDefault(1, -11));
621 assertEquals(-11, testMapOrBuilder.getInt32ToInt32FieldOrDefault(-1, -11));
622
623 assertEquals("11", testMapOrBuilder.getInt32ToStringFieldOrDefault(1, "-11") );
624 assertNull("-11", testMapOrBuilder.getInt32ToStringFieldOrDefault(-1, null)) ;
625
626 assertEquals(TestUtil.toBytes("11"), testMapOrBuilder.getInt32ToBytesFieldOr Default(1, null));
627 assertNull(testMapOrBuilder.getInt32ToBytesFieldOrDefault(-1, null));
628
629 assertEquals(TestMap.EnumValue.FOO, testMapOrBuilder.getInt32ToEnumFieldOrDe fault(1, null));
630 assertNull(testMapOrBuilder.getInt32ToEnumFieldOrDefault(-1, null));
631
632 assertEquals(MessageValue.newBuilder().setValue(11).build(),
633 testMapOrBuilder.getInt32ToMessageFieldOrDefault(1, null));
634 assertNull(testMapOrBuilder.getInt32ToMessageFieldOrDefault(-1, null));
635
636 assertEquals(11, testMapOrBuilder.getStringToInt32FieldOrDefault("1", -11));
637 assertEquals(-11, testMapOrBuilder.getStringToInt32FieldOrDefault("-1", -11) );
638
639 try {
640 testMapOrBuilder.getStringToInt32FieldOrDefault(null, -11);
641 fail();
642 } catch (NullPointerException e) {
643 // expected
644 }
645 }
646
647 public void testGetOrThrow() {
648 TestMap.Builder builder = TestMap.newBuilder();
649 assertMapCounts(0, builder);
650 setMapValues(builder);
651 doTestGetOrDefault(builder);
652 doTestGetOrDefault(builder.build());
653 }
654
655 public void doTestGetOrThrow(TestMapOrBuilder testMapOrBuilder) {
656 assertEquals(11, testMapOrBuilder.getInt32ToInt32FieldOrThrow(1));
657 try {
658 testMapOrBuilder.getInt32ToInt32FieldOrThrow(-1);
659 fail();
660 } catch (IllegalArgumentException e) {
661 // expected
662 }
663
664 assertEquals("11", testMapOrBuilder.getInt32ToStringFieldOrThrow(1));
665
666 try {
667 testMapOrBuilder.getInt32ToStringFieldOrThrow(-1);
668 fail();
669 } catch (IllegalArgumentException e) {
670 // expected
671 }
672
673 assertEquals(TestUtil.toBytes("11"), testMapOrBuilder.getInt32ToBytesFieldOr Throw(1));
674
675 try {
676 testMapOrBuilder.getInt32ToBytesFieldOrThrow(-1);
677 fail();
678 } catch (IllegalArgumentException e) {
679 // expected
680 }
681
682 assertEquals(TestMap.EnumValue.FOO, testMapOrBuilder.getInt32ToEnumFieldOrTh row(1));
683 try {
684 testMapOrBuilder.getInt32ToEnumFieldOrThrow(-1);
685 fail();
686 } catch (IllegalArgumentException e) {
687 // expected
688 }
689
690 assertEquals(MessageValue.newBuilder().setValue(11).build(),
691 testMapOrBuilder.getInt32ToMessageFieldOrThrow(1));
692 try {
693 testMapOrBuilder.getInt32ToMessageFieldOrThrow(-1);
694 fail();
695 } catch (IllegalArgumentException e) {
696 // expected
697 }
698
699 assertEquals(11, testMapOrBuilder.getStringToInt32FieldOrThrow("1"));
700 try {
701 testMapOrBuilder.getStringToInt32FieldOrThrow("-1");
702 fail();
703 } catch (IllegalArgumentException e) {
704 // expected
705 }
706
707 try {
708 testMapOrBuilder.getStringToInt32FieldOrThrow(null);
709 fail();
710 } catch (NullPointerException e) {
711 // expected
712 }
713 }
714
715 public void testPut() {
716 TestMap.Builder builder = TestMap.newBuilder();
717 builder.putInt32ToInt32Field(1, 11);
718 assertEquals(11, builder.getInt32ToInt32FieldOrThrow(1));
719
720 builder.putInt32ToStringField(1, "a");
721 assertEquals("a", builder.getInt32ToStringFieldOrThrow(1));
722 try {
723 builder.putInt32ToStringField(1, null);
724 fail();
725 } catch (NullPointerException e) {
726 // expected
727 }
728
729 builder.putInt32ToBytesField(1, TestUtil.toBytes("11"));
730 assertEquals(TestUtil.toBytes("11"), builder.getInt32ToBytesFieldOrThrow(1)) ;
731 try {
732 builder.putInt32ToBytesField(1, null);
733 fail();
734 } catch (NullPointerException e) {
735 // expected
736 }
737
738 builder.putInt32ToEnumField(1, TestMap.EnumValue.FOO);
739 assertEquals(TestMap.EnumValue.FOO, builder.getInt32ToEnumFieldOrThrow(1));
740 try {
741 builder.putInt32ToEnumField(1, null);
742 fail();
743 } catch (NullPointerException e) {
744 // expected
745 }
746
747 builder.putStringToInt32Field("a", 1);
748 assertEquals(1, builder.getStringToInt32FieldOrThrow("a"));
749 try {
750 builder.putStringToInt32Field(null, -1);
751 } catch (NullPointerException e) {
752 // expected
753 }
754 }
755
756 public void testRemove() {
757 TestMap.Builder builder = TestMap.newBuilder();
758 setMapValues(builder);
759 assertEquals(11, builder.getInt32ToInt32FieldOrThrow(1));
760 for (int times = 0; times < 2; times++) {
761 builder.removeInt32ToInt32Field(1);
762 assertEquals(-1, builder.getInt32ToInt32FieldOrDefault(1, -1));
763 }
764
765 assertEquals("11", builder.getInt32ToStringFieldOrThrow(1));
766 for (int times = 0; times < 2; times++) {
767 builder.removeInt32ToStringField(1);
768 assertNull(builder.getInt32ToStringFieldOrDefault(1, null));
769 }
770
771 assertEquals(TestUtil.toBytes("11"), builder.getInt32ToBytesFieldOrThrow(1)) ;
772 for (int times = 0; times < 2; times++) {
773 builder.removeInt32ToBytesField(1);
774 assertNull(builder.getInt32ToBytesFieldOrDefault(1, null));
775 }
776
777 assertEquals(TestMap.EnumValue.FOO, builder.getInt32ToEnumFieldOrThrow(1));
778 for (int times = 0; times < 2; times++) {
779 builder.removeInt32ToEnumField(1);
780 assertNull(builder.getInt32ToEnumFieldOrDefault(1, null));
781 }
782
783 assertEquals(11, builder.getStringToInt32FieldOrThrow("1"));
784 for (int times = 0; times < 2; times++) {
785 builder.removeStringToInt32Field("1");
786 assertEquals(-1, builder.getStringToInt32FieldOrDefault("1", -1));
787 }
788
789 try {
790 builder.removeStringToInt32Field(null);
791 fail();
792 } catch (NullPointerException e) {
793 // expected
794 }
795 }
796 } 458 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698