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

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

Issue 2495533002: third_party/protobuf: Update to HEAD (83d681ee2c) (Closed)
Patch Set: Make chrome settings proto generated file a component 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;
33 import map_lite_test.MapForProto2TestProto.TestMap; 34 import map_lite_test.MapForProto2TestProto.TestMap;
34 import map_lite_test.MapForProto2TestProto.TestMap.MessageValue; 35 import map_lite_test.MapForProto2TestProto.TestMap.MessageValue;
36 import map_lite_test.MapForProto2TestProto.TestMapOrBuilder;
35 import map_lite_test.MapForProto2TestProto.TestUnknownEnumValue; 37 import map_lite_test.MapForProto2TestProto.TestUnknownEnumValue;
36 38 import java.io.ByteArrayOutputStream;
37 import junit.framework.TestCase; 39 import java.io.IOException;
38
39 import java.util.ArrayList; 40 import java.util.ArrayList;
40 import java.util.Arrays; 41 import java.util.Arrays;
41 import java.util.HashMap; 42 import java.util.HashMap;
42 import java.util.Map; 43 import java.util.Map;
44 import junit.framework.TestCase;
43 45
44 /** 46 /**
45 * Unit tests for map fields. 47 * Unit tests for map fields.
46 */ 48 */
47 public class MapForProto2LiteTest extends TestCase { 49 public final class MapForProto2LiteTest extends TestCase {
50
48 private void setMapValues(TestMap.Builder builder) { 51 private void setMapValues(TestMap.Builder builder) {
49 builder.getMutableInt32ToInt32Field().put(1, 11); 52 builder
50 builder.getMutableInt32ToInt32Field().put(2, 22); 53 .putInt32ToInt32Field(1, 11)
51 builder.getMutableInt32ToInt32Field().put(3, 33); 54 .putInt32ToInt32Field(2, 22)
55 .putInt32ToInt32Field(3, 33)
52 56
53 builder.getMutableInt32ToStringField().put(1, "11"); 57 .putInt32ToStringField(1, "11")
54 builder.getMutableInt32ToStringField().put(2, "22"); 58 .putInt32ToStringField(2, "22")
55 builder.getMutableInt32ToStringField().put(3, "33"); 59 .putInt32ToStringField(3, "33")
56 60
57 builder.getMutableInt32ToBytesField().put(1, TestUtil.toBytes("11")); 61 .putInt32ToBytesField(1, TestUtil.toBytes("11"))
58 builder.getMutableInt32ToBytesField().put(2, TestUtil.toBytes("22")); 62 .putInt32ToBytesField(2, TestUtil.toBytes("22"))
59 builder.getMutableInt32ToBytesField().put(3, TestUtil.toBytes("33")); 63 .putInt32ToBytesField(3, TestUtil.toBytes("33"))
60 64
61 builder.getMutableInt32ToEnumField().put(1, TestMap.EnumValue.FOO); 65 .putInt32ToEnumField(1, TestMap.EnumValue.FOO)
62 builder.getMutableInt32ToEnumField().put(2, TestMap.EnumValue.BAR); 66 .putInt32ToEnumField(2, TestMap.EnumValue.BAR)
63 builder.getMutableInt32ToEnumField().put(3, TestMap.EnumValue.BAZ); 67 .putInt32ToEnumField(3, TestMap.EnumValue.BAZ)
64 68
65 builder.getMutableInt32ToMessageField().put( 69 .putInt32ToMessageField(1, MessageValue.newBuilder().setValue(11).build( ))
66 1, MessageValue.newBuilder().setValue(11).build()); 70 .putInt32ToMessageField(2, MessageValue.newBuilder().setValue(22).build( ))
67 builder.getMutableInt32ToMessageField().put( 71 .putInt32ToMessageField(3, MessageValue.newBuilder().setValue(33).build( ))
68 2, MessageValue.newBuilder().setValue(22).build()); 72
69 builder.getMutableInt32ToMessageField().put( 73 .putStringToInt32Field("1", 11)
70 3, MessageValue.newBuilder().setValue(33).build()); 74 .putStringToInt32Field("2", 22)
71 75 .putStringToInt32Field("3", 33);
72 builder.getMutableStringToInt32Field().put("1", 11); 76 }
73 builder.getMutableStringToInt32Field().put("2", 22); 77
74 builder.getMutableStringToInt32Field().put("3", 33); 78 public void testSetMapValues() {
79 TestMap.Builder mapBuilder = TestMap.newBuilder();
80 setMapValues(mapBuilder);
81 TestMap map = mapBuilder.build();
82 assertMapValuesSet(map);
75 } 83 }
76 84
77 private void copyMapValues(TestMap source, TestMap.Builder destination) { 85 private void copyMapValues(TestMap source, TestMap.Builder destination) {
78 destination 86 destination
79 .putAllInt32ToInt32Field(source.getInt32ToInt32Field()) 87 .putAllInt32ToInt32Field(source.getInt32ToInt32Field())
80 .putAllInt32ToStringField(source.getInt32ToStringField()) 88 .putAllInt32ToStringField(source.getInt32ToStringField())
81 .putAllInt32ToBytesField(source.getInt32ToBytesField()) 89 .putAllInt32ToBytesField(source.getInt32ToBytesField())
82 .putAllInt32ToEnumField(source.getInt32ToEnumField()) 90 .putAllInt32ToEnumField(source.getInt32ToEnumField())
83 .putAllInt32ToMessageField(source.getInt32ToMessageField()) 91 .putAllInt32ToMessageField(source.getInt32ToMessageField())
84 .putAllStringToInt32Field(source.getStringToInt32Field()); 92 .putAllStringToInt32Field(source.getStringToInt32Field());
85 } 93 }
86 94
87 private void assertMapValuesSet(TestMap message) { 95 private void assertMapValuesSet(TestMap message) {
88 assertEquals(3, message.getInt32ToInt32Field().size()); 96 assertEquals(3, message.getInt32ToInt32Field().size());
89 assertEquals(11, message.getInt32ToInt32Field().get(1).intValue()); 97 assertEquals(11, message.getInt32ToInt32Field().get(1).intValue());
90 assertEquals(22, message.getInt32ToInt32Field().get(2).intValue()); 98 assertEquals(22, message.getInt32ToInt32Field().get(2).intValue());
91 assertEquals(33, message.getInt32ToInt32Field().get(3).intValue()); 99 assertEquals(33, message.getInt32ToInt32Field().get(3).intValue());
92 100
93 assertEquals(3, message.getInt32ToStringField().size()); 101 assertEquals(3, message.getInt32ToStringField().size());
94 assertEquals("11", message.getInt32ToStringField().get(1)); 102 assertEquals("11", message.getInt32ToStringField().get(1));
95 assertEquals("22", message.getInt32ToStringField().get(2)); 103 assertEquals("22", message.getInt32ToStringField().get(2));
96 assertEquals("33", message.getInt32ToStringField().get(3)); 104 assertEquals("33", message.getInt32ToStringField().get(3));
97 105
98 assertEquals(3, message.getInt32ToBytesField().size()); 106 assertEquals(3, message.getInt32ToBytesField().size());
99 assertEquals(TestUtil.toBytes("11"), message.getInt32ToBytesField().get(1)); 107 assertEquals(TestUtil.toBytes("11"), message.getInt32ToBytesField().get(1));
100 assertEquals(TestUtil.toBytes("22"), message.getInt32ToBytesField().get(2)); 108 assertEquals(TestUtil.toBytes("22"), message.getInt32ToBytesField().get(2));
101 assertEquals(TestUtil.toBytes("33"), message.getInt32ToBytesField().get(3)); 109 assertEquals(TestUtil.toBytes("33"), message.getInt32ToBytesField().get(3));
102 110
103 assertEquals(3, message.getInt32ToEnumField().size()); 111 assertEquals(3, message.getInt32ToEnumField().size());
104 assertEquals(TestMap.EnumValue.FOO, message.getInt32ToEnumField().get(1)); 112 assertEquals(TestMap.EnumValue.FOO, message.getInt32ToEnumField().get(1));
105 assertEquals(TestMap.EnumValue.BAR, message.getInt32ToEnumField().get(2)); 113 assertEquals(TestMap.EnumValue.BAR, message.getInt32ToEnumField().get(2));
106 assertEquals(TestMap.EnumValue.BAZ, message.getInt32ToEnumField().get(3)); 114 assertEquals(TestMap.EnumValue.BAZ, message.getInt32ToEnumField().get(3));
107 115
108 assertEquals(3, message.getInt32ToMessageField().size()); 116 assertEquals(3, message.getInt32ToMessageField().size());
109 assertEquals(11, message.getInt32ToMessageField().get(1).getValue()); 117 assertEquals(11, message.getInt32ToMessageField().get(1).getValue());
110 assertEquals(22, message.getInt32ToMessageField().get(2).getValue()); 118 assertEquals(22, message.getInt32ToMessageField().get(2).getValue());
111 assertEquals(33, message.getInt32ToMessageField().get(3).getValue()); 119 assertEquals(33, message.getInt32ToMessageField().get(3).getValue());
112 120
113 assertEquals(3, message.getStringToInt32Field().size()); 121 assertEquals(3, message.getStringToInt32Field().size());
114 assertEquals(11, message.getStringToInt32Field().get("1").intValue()); 122 assertEquals(11, message.getStringToInt32Field().get("1").intValue());
115 assertEquals(22, message.getStringToInt32Field().get("2").intValue()); 123 assertEquals(22, message.getStringToInt32Field().get("2").intValue());
116 assertEquals(33, message.getStringToInt32Field().get("3").intValue()); 124 assertEquals(33, message.getStringToInt32Field().get("3").intValue());
117 } 125 }
118 126
119 private void updateMapValues(TestMap.Builder builder) { 127 private void updateMapValues(TestMap.Builder builder) {
120 builder.getMutableInt32ToInt32Field().put(1, 111); 128 builder
121 builder.getMutableInt32ToInt32Field().remove(2); 129 .putInt32ToInt32Field(1, 111)
122 builder.getMutableInt32ToInt32Field().put(4, 44); 130 .removeInt32ToInt32Field(2)
131 .putInt32ToInt32Field(4, 44)
123 132
124 builder.getMutableInt32ToStringField().put(1, "111"); 133 .putInt32ToStringField(1, "111")
125 builder.getMutableInt32ToStringField().remove(2); 134 .removeInt32ToStringField(2)
126 builder.getMutableInt32ToStringField().put(4, "44"); 135 .putInt32ToStringField(4, "44")
127 136
128 builder.getMutableInt32ToBytesField().put(1, TestUtil.toBytes("111")); 137 .putInt32ToBytesField(1, TestUtil.toBytes("111"))
129 builder.getMutableInt32ToBytesField().remove(2); 138 .removeInt32ToBytesField(2)
130 builder.getMutableInt32ToBytesField().put(4, TestUtil.toBytes("44")); 139 .putInt32ToBytesField(4, TestUtil.toBytes("44"))
131 140
132 builder.getMutableInt32ToEnumField().put(1, TestMap.EnumValue.BAR); 141 .putInt32ToEnumField(1, TestMap.EnumValue.BAR)
133 builder.getMutableInt32ToEnumField().remove(2); 142 .removeInt32ToEnumField(2)
134 builder.getMutableInt32ToEnumField().put(4, TestMap.EnumValue.QUX); 143 .putInt32ToEnumField(4, TestMap.EnumValue.QUX)
135 144
136 builder.getMutableInt32ToMessageField().put( 145 .putInt32ToMessageField(1, MessageValue.newBuilder().setValue(111).build ())
137 1, MessageValue.newBuilder().setValue(111).build()); 146 .removeInt32ToMessageField(2)
138 builder.getMutableInt32ToMessageField().remove(2); 147 .putInt32ToMessageField(4, MessageValue.newBuilder().setValue(44).build( ))
139 builder.getMutableInt32ToMessageField().put( 148
140 4, MessageValue.newBuilder().setValue(44).build()); 149 .putStringToInt32Field("1", 111)
141 150 .removeStringToInt32Field("2")
142 builder.getMutableStringToInt32Field().put("1", 111); 151 .putStringToInt32Field("4", 44);
143 builder.getMutableStringToInt32Field().remove("2"); 152 }
144 builder.getMutableStringToInt32Field().put("4", 44); 153
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);
145 } 164 }
146 165
147 private void assertMapValuesUpdated(TestMap message) { 166 private void assertMapValuesUpdated(TestMap message) {
148 assertEquals(3, message.getInt32ToInt32Field().size()); 167 assertEquals(3, message.getInt32ToInt32Field().size());
149 assertEquals(111, message.getInt32ToInt32Field().get(1).intValue()); 168 assertEquals(111, message.getInt32ToInt32Field().get(1).intValue());
150 assertEquals(33, message.getInt32ToInt32Field().get(3).intValue()); 169 assertEquals(33, message.getInt32ToInt32Field().get(3).intValue());
151 assertEquals(44, message.getInt32ToInt32Field().get(4).intValue()); 170 assertEquals(44, message.getInt32ToInt32Field().get(4).intValue());
152 171
153 assertEquals(3, message.getInt32ToStringField().size()); 172 assertEquals(3, message.getInt32ToStringField().size());
154 assertEquals("111", message.getInt32ToStringField().get(1)); 173 assertEquals("111", message.getInt32ToStringField().get(1));
155 assertEquals("33", message.getInt32ToStringField().get(3)); 174 assertEquals("33", message.getInt32ToStringField().get(3));
156 assertEquals("44", message.getInt32ToStringField().get(4)); 175 assertEquals("44", message.getInt32ToStringField().get(4));
157 176
158 assertEquals(3, message.getInt32ToBytesField().size()); 177 assertEquals(3, message.getInt32ToBytesField().size());
159 assertEquals(TestUtil.toBytes("111"), message.getInt32ToBytesField().get(1)) ; 178 assertEquals(TestUtil.toBytes("111"), message.getInt32ToBytesField().get(1)) ;
160 assertEquals(TestUtil.toBytes("33"), message.getInt32ToBytesField().get(3)); 179 assertEquals(TestUtil.toBytes("33"), message.getInt32ToBytesField().get(3));
161 assertEquals(TestUtil.toBytes("44"), message.getInt32ToBytesField().get(4)); 180 assertEquals(TestUtil.toBytes("44"), message.getInt32ToBytesField().get(4));
162 181
163 assertEquals(3, message.getInt32ToEnumField().size()); 182 assertEquals(3, message.getInt32ToEnumField().size());
164 assertEquals(TestMap.EnumValue.BAR, message.getInt32ToEnumField().get(1)); 183 assertEquals(TestMap.EnumValue.BAR, message.getInt32ToEnumField().get(1));
165 assertEquals(TestMap.EnumValue.BAZ, message.getInt32ToEnumField().get(3)); 184 assertEquals(TestMap.EnumValue.BAZ, message.getInt32ToEnumField().get(3));
166 assertEquals(TestMap.EnumValue.QUX, message.getInt32ToEnumField().get(4)); 185 assertEquals(TestMap.EnumValue.QUX, message.getInt32ToEnumField().get(4));
167 186
168 assertEquals(3, message.getInt32ToMessageField().size()); 187 assertEquals(3, message.getInt32ToMessageField().size());
169 assertEquals(111, message.getInt32ToMessageField().get(1).getValue()); 188 assertEquals(111, message.getInt32ToMessageField().get(1).getValue());
170 assertEquals(33, message.getInt32ToMessageField().get(3).getValue()); 189 assertEquals(33, message.getInt32ToMessageField().get(3).getValue());
171 assertEquals(44, message.getInt32ToMessageField().get(4).getValue()); 190 assertEquals(44, message.getInt32ToMessageField().get(4).getValue());
172 191
173 assertEquals(3, message.getStringToInt32Field().size()); 192 assertEquals(3, message.getStringToInt32Field().size());
174 assertEquals(111, message.getStringToInt32Field().get("1").intValue()); 193 assertEquals(111, message.getStringToInt32Field().get("1").intValue());
175 assertEquals(33, message.getStringToInt32Field().get("3").intValue()); 194 assertEquals(33, message.getStringToInt32Field().get("3").intValue());
176 assertEquals(44, message.getStringToInt32Field().get("4").intValue()); 195 assertEquals(44, message.getStringToInt32Field().get("4").intValue());
177 } 196 }
178 197
179 private void assertMapValuesCleared(TestMap message) { 198 private void assertMapValuesCleared(TestMapOrBuilder testMapOrBuilder) {
180 assertEquals(0, message.getInt32ToInt32Field().size()); 199 assertEquals(0, testMapOrBuilder.getInt32ToInt32Field().size());
181 assertEquals(0, message.getInt32ToStringField().size()); 200 assertEquals(0, testMapOrBuilder.getInt32ToInt32FieldCount());
182 assertEquals(0, message.getInt32ToBytesField().size()); 201 assertEquals(0, testMapOrBuilder.getInt32ToStringField().size());
183 assertEquals(0, message.getInt32ToEnumField().size()); 202 assertEquals(0, testMapOrBuilder.getInt32ToStringFieldCount());
184 assertEquals(0, message.getInt32ToMessageField().size()); 203 assertEquals(0, testMapOrBuilder.getInt32ToBytesField().size());
185 assertEquals(0, message.getStringToInt32Field().size()); 204 assertEquals(0, testMapOrBuilder.getInt32ToBytesFieldCount());
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());
186 } 211 }
187 212
188 public void testSanityCopyOnWrite() throws InvalidProtocolBufferException { 213 public void testSanityCopyOnWrite() throws InvalidProtocolBufferException {
189 // Since builders are implemented as a thin wrapper around a message 214 // Since builders are implemented as a thin wrapper around a message
190 // instance, we attempt to verify that we can't cause the builder to modify 215 // instance, we attempt to verify that we can't cause the builder to modify
191 // a produced message. 216 // a produced message.
192 217
193 TestMap.Builder builder = TestMap.newBuilder(); 218 TestMap.Builder builder = TestMap.newBuilder();
194 TestMap message = builder.build(); 219 TestMap message = builder.build();
195 Map<Integer, Integer> intMap = builder.getMutableInt32ToInt32Field(); 220 builder.putInt32ToInt32Field(1, 2);
196 intMap.put(1, 2);
197 assertTrue(message.getInt32ToInt32Field().isEmpty()); 221 assertTrue(message.getInt32ToInt32Field().isEmpty());
198 message = builder.build(); 222 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) {
199 try { 251 try {
200 intMap.put(2, 3); 252 map.put(key, value);
201 fail(); 253 fail();
202 } catch (UnsupportedOperationException e) { 254 } catch (UnsupportedOperationException e) {
203 // expected 255 // expected
204 } 256 }
205 assertEquals(newMap(1, 2), message.getInt32ToInt32Field()); 257 if (!map.isEmpty()) {
258 try {
259 map.entrySet().remove(map.entrySet().iterator().next());
260 fail();
261 } catch (UnsupportedOperationException e) {
262 // expected
263 }
264 }
265 }
266
267 public void testMutableMapLifecycle() {
268 TestMap.Builder builder = TestMap.newBuilder()
269 .putInt32ToInt32Field(1, 2);
270 assertEquals(newMap(1, 2), builder.build().getInt32ToInt32Field());
206 assertEquals(newMap(1, 2), builder.getInt32ToInt32Field()); 271 assertEquals(newMap(1, 2), builder.getInt32ToInt32Field());
207 builder.getMutableInt32ToInt32Field().put(2, 3); 272 builder.putInt32ToInt32Field(2, 3);
208 assertEquals(newMap(1, 2), message.getInt32ToInt32Field());
209 assertEquals(newMap(1, 2, 2, 3), builder.getInt32ToInt32Field());
210 }
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
222 }
223 assertEquals(newMap(1, 2), builder.getInt32ToInt32Field());
224 builder.getMutableInt32ToInt32Field().put(2, 3);
225 assertEquals(newMap(1, 2, 2, 3), builder.getInt32ToInt32Field()); 273 assertEquals(newMap(1, 2, 2, 3), builder.getInt32ToInt32Field());
226 274
227 Map<Integer, TestMap.EnumValue> enumMap = builder.getMutableInt32ToEnumField (); 275 builder.putInt32ToEnumField(1, TestMap.EnumValue.BAR);
228 enumMap.put(1, TestMap.EnumValue.BAR);
229 assertEquals(newMap(1, TestMap.EnumValue.BAR), builder.build().getInt32ToEnu mField()); 276 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 }
236 assertEquals(newMap(1, TestMap.EnumValue.BAR), builder.getInt32ToEnumField() ); 277 assertEquals(newMap(1, TestMap.EnumValue.BAR), builder.getInt32ToEnumField() );
237 builder.getMutableInt32ToEnumField().put(2, TestMap.EnumValue.FOO); 278 builder.putInt32ToEnumField(2, TestMap.EnumValue.FOO);
238 assertEquals( 279 assertEquals(
239 newMap(1, TestMap.EnumValue.BAR, 2, TestMap.EnumValue.FOO), 280 newMap(1, TestMap.EnumValue.BAR, 2, TestMap.EnumValue.FOO),
240 builder.getInt32ToEnumField()); 281 builder.getInt32ToEnumField());
241 282
242 Map<Integer, String> stringMap = builder.getMutableInt32ToStringField(); 283 builder.putInt32ToStringField(1, "1");
243 stringMap.put(1, "1");
244 assertEquals(newMap(1, "1"), builder.build().getInt32ToStringField()); 284 assertEquals(newMap(1, "1"), builder.build().getInt32ToStringField());
245 try {
246 stringMap.put(2, "2");
247 fail();
248 } catch (UnsupportedOperationException e) {
249 // expected
250 }
251 assertEquals(newMap(1, "1"), builder.getInt32ToStringField()); 285 assertEquals(newMap(1, "1"), builder.getInt32ToStringField());
252 builder.getMutableInt32ToStringField().put(2, "2"); 286 builder.putInt32ToStringField(2, "2");
253 assertEquals( 287 assertEquals(newMap(1, "1", 2, "2"), builder.getInt32ToStringField());
254 newMap(1, "1", 2, "2"), 288
255 builder.getInt32ToStringField()); 289 builder.putInt32ToMessageField(1, TestMap.MessageValue.getDefaultInstance()) ;
256
257 Map<Integer, TestMap.MessageValue> messageMap = builder.getMutableInt32ToMes sageField();
258 messageMap.put(1, TestMap.MessageValue.getDefaultInstance());
259 assertEquals(newMap(1, TestMap.MessageValue.getDefaultInstance()), 290 assertEquals(newMap(1, TestMap.MessageValue.getDefaultInstance()),
260 builder.build().getInt32ToMessageField()); 291 builder.build().getInt32ToMessageField());
261 try {
262 messageMap.put(2, TestMap.MessageValue.getDefaultInstance());
263 fail();
264 } catch (UnsupportedOperationException e) {
265 // expected
266 }
267 assertEquals(newMap(1, TestMap.MessageValue.getDefaultInstance()), 292 assertEquals(newMap(1, TestMap.MessageValue.getDefaultInstance()),
268 builder.getInt32ToMessageField()); 293 builder.getInt32ToMessageField());
269 builder.getMutableInt32ToMessageField().put(2, TestMap.MessageValue.getDefau ltInstance()); 294 builder.putInt32ToMessageField(2, TestMap.MessageValue.getDefaultInstance()) ;
270 assertEquals( 295 assertEquals(
271 newMap(1, TestMap.MessageValue.getDefaultInstance(), 296 newMap(1, TestMap.MessageValue.getDefaultInstance(),
272 2, TestMap.MessageValue.getDefaultInstance()), 297 2, TestMap.MessageValue.getDefaultInstance()),
273 builder.getInt32ToMessageField()); 298 builder.getInt32ToMessageField());
274 } 299 }
275 300
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
322 public void testGettersAndSetters() throws Exception { 301 public void testGettersAndSetters() throws Exception {
323 TestMap.Builder builder = TestMap.newBuilder(); 302 TestMap.Builder builder = TestMap.newBuilder();
324 TestMap message = builder.build(); 303 TestMap message = builder.build();
325 assertMapValuesCleared(message); 304 assertMapValuesCleared(message);
326 305
327 builder = message.toBuilder(); 306 builder = message.toBuilder();
328 setMapValues(builder); 307 setMapValues(builder);
329 message = builder.build(); 308 message = builder.build();
330 assertMapValuesSet(message); 309 assertMapValuesSet(message);
331 310
332 builder = message.toBuilder(); 311 builder = message.toBuilder();
333 updateMapValues(builder); 312 updateMapValues(builder);
334 message = builder.build(); 313 message = builder.build();
335 assertMapValuesUpdated(message); 314 assertMapValuesUpdated(message);
336 315
337 builder = message.toBuilder(); 316 builder = message.toBuilder();
338 builder.clear(); 317 builder.clear();
318 assertMapValuesCleared(builder);
339 message = builder.build(); 319 message = builder.build();
340 assertMapValuesCleared(message); 320 assertMapValuesCleared(message);
341 } 321 }
342 322
343 public void testPutAll() throws Exception { 323 public void testPutAll() throws Exception {
344 TestMap.Builder sourceBuilder = TestMap.newBuilder(); 324 TestMap.Builder sourceBuilder = TestMap.newBuilder();
345 setMapValues(sourceBuilder); 325 setMapValues(sourceBuilder);
346 TestMap source = sourceBuilder.build(); 326 TestMap source = sourceBuilder.build();
327 assertMapValuesSet(source);
347 328
348 TestMap.Builder destination = TestMap.newBuilder(); 329 TestMap.Builder destination = TestMap.newBuilder();
349 copyMapValues(source, destination); 330 copyMapValues(source, destination);
350 assertMapValuesSet(destination.build()); 331 assertMapValuesSet(destination.build());
351 } 332 }
352 333
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
353 public void testSerializeAndParse() throws Exception { 373 public void testSerializeAndParse() throws Exception {
354 TestMap.Builder builder = TestMap.newBuilder(); 374 TestMap.Builder builder = TestMap.newBuilder();
355 setMapValues(builder); 375 setMapValues(builder);
356 TestMap message = builder.build(); 376 TestMap message = builder.build();
357 assertEquals(message.getSerializedSize(), message.toByteString().size()); 377 assertEquals(message.getSerializedSize(), message.toByteString().size());
358 message = TestMap.parser().parseFrom(message.toByteString()); 378 message = TestMap.parser().parseFrom(message.toByteString());
359 assertMapValuesSet(message); 379 assertMapValuesSet(message);
360 380
361 builder = message.toBuilder(); 381 builder = message.toBuilder();
362 updateMapValues(builder); 382 updateMapValues(builder);
363 message = builder.build(); 383 message = builder.build();
364 assertEquals(message.getSerializedSize(), message.toByteString().size()); 384 assertEquals(message.getSerializedSize(), message.toByteString().size());
365 message = TestMap.parser().parseFrom(message.toByteString()); 385 message = TestMap.parser().parseFrom(message.toByteString());
366 assertMapValuesUpdated(message); 386 assertMapValuesUpdated(message);
367 387
368 builder = message.toBuilder(); 388 builder = message.toBuilder();
369 builder.clear(); 389 builder.clear();
370 message = builder.build(); 390 message = builder.build();
371 assertEquals(message.getSerializedSize(), message.toByteString().size()); 391 assertEquals(message.getSerializedSize(), message.toByteString().size());
372 message = TestMap.parser().parseFrom(message.toByteString()); 392 message = TestMap.parser().parseFrom(message.toByteString());
373 assertMapValuesCleared(message); 393 assertMapValuesCleared(message);
374 } 394 }
375 395
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
376 public void testMergeFrom() throws Exception { 445 public void testMergeFrom() throws Exception {
377 TestMap.Builder builder = TestMap.newBuilder(); 446 TestMap.Builder builder = TestMap.newBuilder();
378 setMapValues(builder); 447 setMapValues(builder);
379 TestMap message = builder.build(); 448 TestMap message = builder.build();
380 449
381 TestMap.Builder other = TestMap.newBuilder(); 450 TestMap.Builder other = TestMap.newBuilder();
382 other.mergeFrom(message); 451 other.mergeFrom(message);
383 assertMapValuesSet(other.build()); 452 assertMapValuesSet(other.build());
384 } 453 }
385 454
386 public void testEqualsAndHashCode() throws Exception { 455 public void testEqualsAndHashCode() throws Exception {
387 // Test that generated equals() and hashCode() will disregard the order 456 // Test that generated equals() and hashCode() will disregard the order
388 // of map entries when comparing/hashing map fields. 457 // of map entries when comparing/hashing map fields.
389 458
390 // We can't control the order of elements in a HashMap. The best we can do 459 // We can't control the order of elements in a HashMap. The best we can do
391 // here is to add elements in different order. 460 // here is to add elements in different order.
392 TestMap.Builder b1 = TestMap.newBuilder(); 461 TestMap.Builder b1 = TestMap.newBuilder()
393 b1.getMutableInt32ToInt32Field().put(1, 2); 462 .putInt32ToInt32Field(1, 2)
394 b1.getMutableInt32ToInt32Field().put(3, 4); 463 .putInt32ToInt32Field(3, 4)
395 b1.getMutableInt32ToInt32Field().put(5, 6); 464 .putInt32ToInt32Field(5, 6);
396 TestMap m1 = b1.build(); 465 TestMap m1 = b1.build();
397 466
398 TestMap.Builder b2 = TestMap.newBuilder(); 467 TestMap.Builder b2 = TestMap.newBuilder()
399 b2.getMutableInt32ToInt32Field().put(5, 6); 468 .putInt32ToInt32Field(5, 6)
400 b2.getMutableInt32ToInt32Field().put(1, 2); 469 .putInt32ToInt32Field(1, 2)
401 b2.getMutableInt32ToInt32Field().put(3, 4); 470 .putInt32ToInt32Field(3, 4);
402 TestMap m2 = b2.build(); 471 TestMap m2 = b2.build();
403 472
404 assertEquals(m1, m2); 473 assertEquals(m1, m2);
405 assertEquals(m1.hashCode(), m2.hashCode()); 474 assertEquals(m1.hashCode(), m2.hashCode());
406 475
407 // Make sure we did compare map fields. 476 // Make sure we did compare map fields.
408 b2.getMutableInt32ToInt32Field().put(1, 0); 477 b2.putInt32ToInt32Field(1, 0);
409 m2 = b2.build(); 478 m2 = b2.build();
410 assertFalse(m1.equals(m2)); 479 assertFalse(m1.equals(m2));
411 // Don't check m1.hashCode() != m2.hashCode() because it's not guaranteed 480 // Don't check m1.hashCode() != m2.hashCode() because it's not guaranteed
412 // to be different. 481 // to be different.
413 } 482 }
414 483
415 public void testUnknownEnumValues() throws Exception { 484 public void testUnknownEnumValues() throws Exception {
416 TestUnknownEnumValue.Builder builder = 485 TestUnknownEnumValue.Builder builder = TestUnknownEnumValue.newBuilder()
417 TestUnknownEnumValue.newBuilder(); 486 .putInt32ToInt32Field(1, 1)
418 builder.getMutableInt32ToInt32Field().put(1, 1); 487 .putInt32ToInt32Field(2, 54321);
419 builder.getMutableInt32ToInt32Field().put(2, 54321);
420 ByteString data = builder.build().toByteString(); 488 ByteString data = builder.build().toByteString();
421 489
422 TestMap message = TestMap.parseFrom(data); 490 TestMap message = TestMap.parseFrom(data);
423 // Entries with unknown enum values will be stored into UnknownFieldSet so 491 // Entries with unknown enum values will be stored into UnknownFieldSet so
424 // there is only one entry in the map. 492 // there is only one entry in the map.
425 assertEquals(1, message.getInt32ToEnumField().size()); 493 assertEquals(1, message.getInt32ToEnumField().size());
426 assertEquals(TestMap.EnumValue.BAR, message.getInt32ToEnumField().get(1)); 494 assertEquals(TestMap.EnumValue.BAR, message.getInt32ToEnumField().get(1));
427 // Serializing and parsing should preserve the unknown entry. 495 // Serializing and parsing should preserve the unknown entry.
428 data = message.toByteString(); 496 data = message.toByteString();
429 TestUnknownEnumValue messageWithUnknownEnums = 497 TestUnknownEnumValue messageWithUnknownEnums =
430 TestUnknownEnumValue.parseFrom(data); 498 TestUnknownEnumValue.parseFrom(data);
431 assertEquals(2, messageWithUnknownEnums.getInt32ToInt32Field().size()); 499 assertEquals(2, messageWithUnknownEnums.getInt32ToInt32Field().size());
432 assertEquals(1, messageWithUnknownEnums.getInt32ToInt32Field().get(1).intVal ue()); 500 assertEquals(1, messageWithUnknownEnums.getInt32ToInt32Field().get(1).intVal ue());
433 assertEquals(54321, messageWithUnknownEnums.getInt32ToInt32Field().get(2).in tValue()); 501 assertEquals(54321, messageWithUnknownEnums.getInt32ToInt32Field().get(2).in tValue());
434 } 502 }
435 503
436
437 public void testIterationOrder() throws Exception { 504 public void testIterationOrder() throws Exception {
438 TestMap.Builder builder = TestMap.newBuilder(); 505 TestMap.Builder builder = TestMap.newBuilder();
439 setMapValues(builder); 506 setMapValues(builder);
440 TestMap message = builder.build(); 507 TestMap message = builder.build();
441 508
442 assertEquals(Arrays.asList("1", "2", "3"), 509 assertEquals(Arrays.asList("1", "2", "3"),
443 new ArrayList<String>(message.getStringToInt32Field().keySet())); 510 new ArrayList<String>(message.getStringToInt32Field().keySet()));
444 } 511 }
445 512
446 private static <K, V> Map<K, V> newMap(K key1, V value1) { 513 private static <K, V> Map<K, V> newMap(K key1, V value1) {
447 Map<K, V> map = new HashMap<K, V>(); 514 Map<K, V> map = new HashMap<K, V>();
448 map.put(key1, value1); 515 map.put(key1, value1);
449 return map; 516 return map;
450 } 517 }
451 518
452 private static <K, V> Map<K, V> newMap(K key1, V value1, K key2, V value2) { 519 private static <K, V> Map<K, V> newMap(K key1, V value1, K key2, V value2) {
453 Map<K, V> map = new HashMap<K, V>(); 520 Map<K, V> map = new HashMap<K, V>();
454 map.put(key1, value1); 521 map.put(key1, value1);
455 map.put(key2, value2); 522 map.put(key2, value2);
456 return map; 523 return map;
457 } 524 }
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 }
458 } 796 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698