blob: 3b4aa17fe8024aae0ef32d4dc29758b8c5f4667d [file] [log] [blame]
Feng Xiaoe841bac2015-12-11 17:09:20 -08001// Protocol Buffers - Google's data interchange format
2// Copyright 2008 Google Inc. All rights reserved.
3// https://developers.google.com/protocol-buffers/
4//
5// Redistribution and use in source and binary forms, with or without
6// modification, are permitted provided that the following conditions are
7// met:
8//
9// * Redistributions of source code must retain the above copyright
10// notice, this list of conditions and the following disclaimer.
11// * Redistributions in binary form must reproduce the above
12// copyright notice, this list of conditions and the following disclaimer
13// in the documentation and/or other materials provided with the
14// distribution.
15// * Neither the name of Google Inc. nor the names of its
16// contributors may be used to endorse or promote products derived from
17// this software without specific prior written permission.
18//
19// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
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.
30
31// Test suite is written using Jasmine -- see http://jasmine.github.io/
32
33goog.require('goog.testing.asserts');
Josh Habermane9f31ee2016-02-04 10:29:27 -080034
murgatroid99a862b6b2016-02-24 13:44:57 -080035// CommonJS-LoadFromFile: ../testbinary_pb proto.jspb.test
Feng Xiaoe841bac2015-12-11 17:09:20 -080036goog.require('proto.jspb.test.ExtendsWithMessage');
37goog.require('proto.jspb.test.ForeignEnum');
38goog.require('proto.jspb.test.ForeignMessage');
39goog.require('proto.jspb.test.TestAllTypes');
40goog.require('proto.jspb.test.TestExtendable');
41
42var suite = {};
43
44/**
45 * Helper: fill all fields on a TestAllTypes message.
46 * @param {proto.jspb.test.TestAllTypes} msg
47 */
48function fillAllFields(msg) {
49 msg.setOptionalInt32(-42);
50 // can be exactly represented by JS number (64-bit double, i.e., 52-bit
51 // mantissa).
52 msg.setOptionalInt64(-0x7fffffff00000000);
53 msg.setOptionalUint32(0x80000000);
54 msg.setOptionalUint64(0xf000000000000000);
55 msg.setOptionalSint32(-100);
56 msg.setOptionalSint64(-0x8000000000000000);
57 msg.setOptionalFixed32(1234);
58 msg.setOptionalFixed64(0x1234567800000000);
59 msg.setOptionalSfixed32(-1234);
60 msg.setOptionalSfixed64(-0x1234567800000000);
61 msg.setOptionalFloat(1.5);
62 msg.setOptionalDouble(-1.5);
63 msg.setOptionalBool(true);
64 msg.setOptionalString('hello world');
65 msg.setOptionalBytes('bytes');
66 msg.setOptionalGroup(new proto.jspb.test.TestAllTypes.OptionalGroup());
67 msg.getOptionalGroup().setA(100);
68 var submsg = new proto.jspb.test.ForeignMessage();
69 submsg.setC(16);
70 msg.setOptionalForeignMessage(submsg);
71 msg.setOptionalForeignEnum(proto.jspb.test.ForeignEnum.FOREIGN_FOO);
Feng Xiaoe841bac2015-12-11 17:09:20 -080072 msg.setOneofString('oneof');
73
74 msg.setRepeatedInt32List([-42]);
75 msg.setRepeatedInt64List([-0x7fffffff00000000]);
76 msg.setRepeatedUint32List([0x80000000]);
77 msg.setRepeatedUint64List([0xf000000000000000]);
78 msg.setRepeatedSint32List([-100]);
79 msg.setRepeatedSint64List([-0x8000000000000000]);
80 msg.setRepeatedFixed32List([1234]);
81 msg.setRepeatedFixed64List([0x1234567800000000]);
82 msg.setRepeatedSfixed32List([-1234]);
83 msg.setRepeatedSfixed64List([-0x1234567800000000]);
84 msg.setRepeatedFloatList([1.5]);
85 msg.setRepeatedDoubleList([-1.5]);
86 msg.setRepeatedBoolList([true]);
87 msg.setRepeatedStringList(['hello world']);
88 msg.setRepeatedBytesList(['bytes']);
89 msg.setRepeatedGroupList([new proto.jspb.test.TestAllTypes.RepeatedGroup()]);
90 msg.getRepeatedGroupList()[0].setA(100);
91 submsg = new proto.jspb.test.ForeignMessage();
92 submsg.setC(1000);
93 msg.setRepeatedForeignMessageList([submsg]);
94 msg.setRepeatedForeignEnumList([proto.jspb.test.ForeignEnum.FOREIGN_FOO]);
95
96 msg.setPackedRepeatedInt32List([-42]);
97 msg.setPackedRepeatedInt64List([-0x7fffffff00000000]);
98 msg.setPackedRepeatedUint32List([0x80000000]);
99 msg.setPackedRepeatedUint64List([0xf000000000000000]);
100 msg.setPackedRepeatedSint32List([-100]);
101 msg.setPackedRepeatedSint64List([-0x8000000000000000]);
102 msg.setPackedRepeatedFixed32List([1234]);
103 msg.setPackedRepeatedFixed64List([0x1234567800000000]);
104 msg.setPackedRepeatedSfixed32List([-1234]);
105 msg.setPackedRepeatedSfixed64List([-0x1234567800000000]);
106 msg.setPackedRepeatedFloatList([1.5]);
107 msg.setPackedRepeatedDoubleList([-1.5]);
108 msg.setPackedRepeatedBoolList([true]);
Feng Xiaoe841bac2015-12-11 17:09:20 -0800109}
110
111
112/**
113 * Helper: compare a bytes field to a string with codepoints 0--255.
114 * @param {Uint8Array|string} arr
115 * @param {string} str
116 * @return {boolean}
117 */
118function bytesCompare(arr, str) {
119 if (arr.length != str.length) {
120 return false;
121 }
122 if (typeof arr == 'string') {
123 for (var i = 0; i < arr.length; i++) {
124 if (arr.charCodeAt(i) != str.charCodeAt(i)) {
125 return false;
126 }
127 }
128 return true;
129 } else {
130 for (var i = 0; i < arr.length; i++) {
131 if (arr[i] != str.charCodeAt(i)) {
132 return false;
133 }
134 }
135 return true;
136 }
137}
138
139
140/**
141 * Helper: verify contents of given TestAllTypes message as set by
142 * fillAllFields().
143 * @param {proto.jspb.test.TestAllTypes} msg
144 */
145function checkAllFields(msg) {
146 assertEquals(msg.getOptionalInt32(), -42);
147 assertEquals(msg.getOptionalInt64(), -0x7fffffff00000000);
148 assertEquals(msg.getOptionalUint32(), 0x80000000);
149 assertEquals(msg.getOptionalUint64(), 0xf000000000000000);
150 assertEquals(msg.getOptionalSint32(), -100);
151 assertEquals(msg.getOptionalSint64(), -0x8000000000000000);
152 assertEquals(msg.getOptionalFixed32(), 1234);
153 assertEquals(msg.getOptionalFixed64(), 0x1234567800000000);
154 assertEquals(msg.getOptionalSfixed32(), -1234);
155 assertEquals(msg.getOptionalSfixed64(), -0x1234567800000000);
156 assertEquals(msg.getOptionalFloat(), 1.5);
157 assertEquals(msg.getOptionalDouble(), -1.5);
158 assertEquals(msg.getOptionalBool(), true);
159 assertEquals(msg.getOptionalString(), 'hello world');
160 assertEquals(true, bytesCompare(msg.getOptionalBytes(), 'bytes'));
161 assertEquals(msg.getOptionalGroup().getA(), 100);
162 assertEquals(msg.getOptionalForeignMessage().getC(), 16);
163 assertEquals(msg.getOptionalForeignEnum(),
164 proto.jspb.test.ForeignEnum.FOREIGN_FOO);
Feng Xiaoe841bac2015-12-11 17:09:20 -0800165 assertEquals(msg.getOneofString(), 'oneof');
166 assertEquals(msg.getOneofFieldCase(),
167 proto.jspb.test.TestAllTypes.OneofFieldCase.ONEOF_STRING);
168
169 assertElementsEquals(msg.getRepeatedInt32List(), [-42]);
170 assertElementsEquals(msg.getRepeatedInt64List(), [-0x7fffffff00000000]);
171 assertElementsEquals(msg.getRepeatedUint32List(), [0x80000000]);
172 assertElementsEquals(msg.getRepeatedUint64List(), [0xf000000000000000]);
173 assertElementsEquals(msg.getRepeatedSint32List(), [-100]);
174 assertElementsEquals(msg.getRepeatedSint64List(), [-0x8000000000000000]);
175 assertElementsEquals(msg.getRepeatedFixed32List(), [1234]);
176 assertElementsEquals(msg.getRepeatedFixed64List(), [0x1234567800000000]);
177 assertElementsEquals(msg.getRepeatedSfixed32List(), [-1234]);
178 assertElementsEquals(msg.getRepeatedSfixed64List(), [-0x1234567800000000]);
179 assertElementsEquals(msg.getRepeatedFloatList(), [1.5]);
180 assertElementsEquals(msg.getRepeatedDoubleList(), [-1.5]);
181 assertElementsEquals(msg.getRepeatedBoolList(), [true]);
182 assertElementsEquals(msg.getRepeatedStringList(), ['hello world']);
183 assertEquals(msg.getRepeatedBytesList().length, 1);
184 assertEquals(true, bytesCompare(msg.getRepeatedBytesList()[0], 'bytes'));
185 assertEquals(msg.getRepeatedGroupList().length, 1);
186 assertEquals(msg.getRepeatedGroupList()[0].getA(), 100);
187 assertEquals(msg.getRepeatedForeignMessageList().length, 1);
188 assertEquals(msg.getRepeatedForeignMessageList()[0].getC(), 1000);
189 assertElementsEquals(msg.getRepeatedForeignEnumList(),
190 [proto.jspb.test.ForeignEnum.FOREIGN_FOO]);
191
192 assertElementsEquals(msg.getPackedRepeatedInt32List(), [-42]);
193 assertElementsEquals(msg.getPackedRepeatedInt64List(),
194 [-0x7fffffff00000000]);
195 assertElementsEquals(msg.getPackedRepeatedUint32List(), [0x80000000]);
196 assertElementsEquals(msg.getPackedRepeatedUint64List(), [0xf000000000000000]);
197 assertElementsEquals(msg.getPackedRepeatedSint32List(), [-100]);
198 assertElementsEquals(msg.getPackedRepeatedSint64List(),
199 [-0x8000000000000000]);
200 assertElementsEquals(msg.getPackedRepeatedFixed32List(), [1234]);
201 assertElementsEquals(msg.getPackedRepeatedFixed64List(),
202 [0x1234567800000000]);
203 assertElementsEquals(msg.getPackedRepeatedSfixed32List(), [-1234]);
204 assertElementsEquals(msg.getPackedRepeatedSfixed64List(),
205 [-0x1234567800000000]);
206 assertElementsEquals(msg.getPackedRepeatedFloatList(), [1.5]);
207 assertElementsEquals(msg.getPackedRepeatedDoubleList(), [-1.5]);
208 assertElementsEquals(msg.getPackedRepeatedBoolList(), [true]);
Feng Xiaoe841bac2015-12-11 17:09:20 -0800209}
210
211
212/**
213 * Helper: verify that all expected extensions are present.
214 * @param {!proto.jspb.test.TestExtendable} msg
215 */
216function checkExtensions(msg) {
217 assertEquals(-42,
218 msg.getExtension(proto.jspb.test.extendOptionalInt32));
219 assertEquals(-0x7fffffff00000000,
220 msg.getExtension(proto.jspb.test.extendOptionalInt64));
221 assertEquals(0x80000000,
222 msg.getExtension(proto.jspb.test.extendOptionalUint32));
223 assertEquals(0xf000000000000000,
224 msg.getExtension(proto.jspb.test.extendOptionalUint64));
225 assertEquals(-100,
226 msg.getExtension(proto.jspb.test.extendOptionalSint32));
227 assertEquals(-0x8000000000000000,
228 msg.getExtension(proto.jspb.test.extendOptionalSint64));
229 assertEquals(1234,
230 msg.getExtension(proto.jspb.test.extendOptionalFixed32));
231 assertEquals(0x1234567800000000,
232 msg.getExtension(proto.jspb.test.extendOptionalFixed64));
233 assertEquals(-1234,
234 msg.getExtension(proto.jspb.test.extendOptionalSfixed32));
235 assertEquals(-0x1234567800000000,
236 msg.getExtension(proto.jspb.test.extendOptionalSfixed64));
237 assertEquals(1.5,
238 msg.getExtension(proto.jspb.test.extendOptionalFloat));
239 assertEquals(-1.5,
240 msg.getExtension(proto.jspb.test.extendOptionalDouble));
241 assertEquals(true,
242 msg.getExtension(proto.jspb.test.extendOptionalBool));
243 assertEquals('hello world',
244 msg.getExtension(proto.jspb.test.extendOptionalString));
245 assertEquals(true,
246 bytesCompare(msg.getExtension(proto.jspb.test.extendOptionalBytes),
247 'bytes'));
248 assertEquals(16,
249 msg.getExtension(
250 proto.jspb.test.ExtendsWithMessage.optionalExtension).getFoo());
251 assertEquals(proto.jspb.test.ForeignEnum.FOREIGN_FOO,
252 msg.getExtension(proto.jspb.test.extendOptionalForeignEnum));
Feng Xiaoe841bac2015-12-11 17:09:20 -0800253
254 assertElementsEquals(
255 msg.getExtension(proto.jspb.test.extendRepeatedInt32List),
256 [-42]);
257 assertElementsEquals(
258 msg.getExtension(proto.jspb.test.extendRepeatedInt64List),
259 [-0x7fffffff00000000]);
260 assertElementsEquals(
261 msg.getExtension(proto.jspb.test.extendRepeatedUint32List),
262 [0x80000000]);
263 assertElementsEquals(
264 msg.getExtension(proto.jspb.test.extendRepeatedUint64List),
265 [0xf000000000000000]);
266 assertElementsEquals(
267 msg.getExtension(proto.jspb.test.extendRepeatedSint32List),
268 [-100]);
269 assertElementsEquals(
270 msg.getExtension(proto.jspb.test.extendRepeatedSint64List),
271 [-0x8000000000000000]);
272 assertElementsEquals(
273 msg.getExtension(proto.jspb.test.extendRepeatedFixed32List),
274 [1234]);
275 assertElementsEquals(
276 msg.getExtension(proto.jspb.test.extendRepeatedFixed64List),
277 [0x1234567800000000]);
278 assertElementsEquals(
279 msg.getExtension(proto.jspb.test.extendRepeatedSfixed32List),
280 [-1234]);
281 assertElementsEquals(
282 msg.getExtension(proto.jspb.test.extendRepeatedSfixed64List),
283 [-0x1234567800000000]);
284 assertElementsEquals(
285 msg.getExtension(proto.jspb.test.extendRepeatedFloatList),
286 [1.5]);
287 assertElementsEquals(
288 msg.getExtension(proto.jspb.test.extendRepeatedDoubleList),
289 [-1.5]);
290 assertElementsEquals(
291 msg.getExtension(proto.jspb.test.extendRepeatedBoolList),
292 [true]);
293 assertElementsEquals(
294 msg.getExtension(proto.jspb.test.extendRepeatedStringList),
295 ['hello world']);
296 assertEquals(true,
297 bytesCompare(
298 msg.getExtension(proto.jspb.test.extendRepeatedBytesList)[0],
299 'bytes'));
300 assertEquals(1000,
301 msg.getExtension(
302 proto.jspb.test.ExtendsWithMessage.repeatedExtensionList)[0]
303 .getFoo());
304 assertElementsEquals(
305 msg.getExtension(proto.jspb.test.extendRepeatedForeignEnumList),
306 [proto.jspb.test.ForeignEnum.FOREIGN_FOO]);
307
308 assertElementsEquals(
Feng Xiaoe841bac2015-12-11 17:09:20 -0800309 msg.getExtension(proto.jspb.test.extendPackedRepeatedInt32List),
310 [-42]);
311 assertElementsEquals(
312 msg.getExtension(proto.jspb.test.extendPackedRepeatedInt64List),
313 [-0x7fffffff00000000]);
314 assertElementsEquals(
315 msg.getExtension(proto.jspb.test.extendPackedRepeatedUint32List),
316 [0x80000000]);
317 assertElementsEquals(
318 msg.getExtension(proto.jspb.test.extendPackedRepeatedUint64List),
319 [0xf000000000000000]);
320 assertElementsEquals(
321 msg.getExtension(proto.jspb.test.extendPackedRepeatedSint32List),
322 [-100]);
323 assertElementsEquals(
324 msg.getExtension(proto.jspb.test.extendPackedRepeatedSint64List),
325 [-0x8000000000000000]);
326 assertElementsEquals(
327 msg.getExtension(proto.jspb.test.extendPackedRepeatedFixed32List),
328 [1234]);
329 assertElementsEquals(
330 msg.getExtension(proto.jspb.test.extendPackedRepeatedFixed64List),
331 [0x1234567800000000]);
332 assertElementsEquals(
333 msg.getExtension(proto.jspb.test.extendPackedRepeatedSfixed32List),
334 [-1234]);
335 assertElementsEquals(
336 msg.getExtension(proto.jspb.test.extendPackedRepeatedSfixed64List),
337 [-0x1234567800000000]);
338 assertElementsEquals(
339 msg.getExtension(proto.jspb.test.extendPackedRepeatedFloatList),
340 [1.5]);
341 assertElementsEquals(
342 msg.getExtension(proto.jspb.test.extendPackedRepeatedDoubleList),
343 [-1.5]);
344 assertElementsEquals(
345 msg.getExtension(proto.jspb.test.extendPackedRepeatedBoolList),
346 [true]);
347 assertElementsEquals(
348 msg.getExtension(proto.jspb.test.extendPackedRepeatedForeignEnumList),
349 [proto.jspb.test.ForeignEnum.FOREIGN_FOO]);
Feng Xiaoe841bac2015-12-11 17:09:20 -0800350}
351
352
353describe('protoBinaryTest', function() {
354 /**
355 * Tests a basic serialization-deserializaton round-trip with all supported
356 * field types (on the TestAllTypes message type).
357 */
358 it('testRoundTrip', function() {
359 var msg = new proto.jspb.test.TestAllTypes();
360 fillAllFields(msg);
361 var encoded = msg.serializeBinary();
362 var decoded = proto.jspb.test.TestAllTypes.deserializeBinary(encoded);
363 checkAllFields(decoded);
364 });
365
366
367 /**
368 * Helper: fill all extension values.
369 * @param {proto.jspb.test.TestExtendable} msg
370 */
371 function fillExtensions(msg) {
372 msg.setExtension(
373 proto.jspb.test.extendOptionalInt32, -42);
374 msg.setExtension(
375 proto.jspb.test.extendOptionalInt64, -0x7fffffff00000000);
376 msg.setExtension(
377 proto.jspb.test.extendOptionalUint32, 0x80000000);
378 msg.setExtension(
379 proto.jspb.test.extendOptionalUint64, 0xf000000000000000);
380 msg.setExtension(
381 proto.jspb.test.extendOptionalSint32, -100);
382 msg.setExtension(
383 proto.jspb.test.extendOptionalSint64, -0x8000000000000000);
384 msg.setExtension(
385 proto.jspb.test.extendOptionalFixed32, 1234);
386 msg.setExtension(
387 proto.jspb.test.extendOptionalFixed64, 0x1234567800000000);
388 msg.setExtension(
389 proto.jspb.test.extendOptionalSfixed32, -1234);
390 msg.setExtension(
391 proto.jspb.test.extendOptionalSfixed64, -0x1234567800000000);
392 msg.setExtension(
393 proto.jspb.test.extendOptionalFloat, 1.5);
394 msg.setExtension(
395 proto.jspb.test.extendOptionalDouble, -1.5);
396 msg.setExtension(
397 proto.jspb.test.extendOptionalBool, true);
398 msg.setExtension(
399 proto.jspb.test.extendOptionalString, 'hello world');
400 msg.setExtension(
401 proto.jspb.test.extendOptionalBytes, 'bytes');
402 var submsg = new proto.jspb.test.ExtendsWithMessage();
403 submsg.setFoo(16);
404 msg.setExtension(
405 proto.jspb.test.ExtendsWithMessage.optionalExtension, submsg);
406 msg.setExtension(
407 proto.jspb.test.extendOptionalForeignEnum,
408 proto.jspb.test.ForeignEnum.FOREIGN_FOO);
Feng Xiaoe841bac2015-12-11 17:09:20 -0800409
410 msg.setExtension(
411 proto.jspb.test.extendRepeatedInt32List, [-42]);
412 msg.setExtension(
413 proto.jspb.test.extendRepeatedInt64List, [-0x7fffffff00000000]);
414 msg.setExtension(
415 proto.jspb.test.extendRepeatedUint32List, [0x80000000]);
416 msg.setExtension(
417 proto.jspb.test.extendRepeatedUint64List, [0xf000000000000000]);
418 msg.setExtension(
419 proto.jspb.test.extendRepeatedSint32List, [-100]);
420 msg.setExtension(
421 proto.jspb.test.extendRepeatedSint64List, [-0x8000000000000000]);
422 msg.setExtension(
423 proto.jspb.test.extendRepeatedFixed32List, [1234]);
424 msg.setExtension(
425 proto.jspb.test.extendRepeatedFixed64List, [0x1234567800000000]);
426 msg.setExtension(
427 proto.jspb.test.extendRepeatedSfixed32List, [-1234]);
428 msg.setExtension(
429 proto.jspb.test.extendRepeatedSfixed64List, [-0x1234567800000000]);
430 msg.setExtension(
431 proto.jspb.test.extendRepeatedFloatList, [1.5]);
432 msg.setExtension(
433 proto.jspb.test.extendRepeatedDoubleList, [-1.5]);
434 msg.setExtension(
435 proto.jspb.test.extendRepeatedBoolList, [true]);
436 msg.setExtension(
437 proto.jspb.test.extendRepeatedStringList, ['hello world']);
438 msg.setExtension(
439 proto.jspb.test.extendRepeatedBytesList, ['bytes']);
440 submsg = new proto.jspb.test.ExtendsWithMessage();
441 submsg.setFoo(1000);
442 msg.setExtension(
443 proto.jspb.test.ExtendsWithMessage.repeatedExtensionList, [submsg]);
444 msg.setExtension(proto.jspb.test.extendRepeatedForeignEnumList,
445 [proto.jspb.test.ForeignEnum.FOREIGN_FOO]);
446
447 msg.setExtension(
Feng Xiaoe841bac2015-12-11 17:09:20 -0800448 proto.jspb.test.extendPackedRepeatedInt32List, [-42]);
449 msg.setExtension(
450 proto.jspb.test.extendPackedRepeatedInt64List, [-0x7fffffff00000000]);
451 msg.setExtension(
452 proto.jspb.test.extendPackedRepeatedUint32List, [0x80000000]);
453 msg.setExtension(
454 proto.jspb.test.extendPackedRepeatedUint64List, [0xf000000000000000]);
455 msg.setExtension(
456 proto.jspb.test.extendPackedRepeatedSint32List, [-100]);
457 msg.setExtension(
458 proto.jspb.test.extendPackedRepeatedSint64List, [-0x8000000000000000]);
459 msg.setExtension(
460 proto.jspb.test.extendPackedRepeatedFixed32List, [1234]);
461 msg.setExtension(
462 proto.jspb.test.extendPackedRepeatedFixed64List, [0x1234567800000000]);
463 msg.setExtension(
464 proto.jspb.test.extendPackedRepeatedSfixed32List, [-1234]);
465 msg.setExtension(
466 proto.jspb.test.extendPackedRepeatedSfixed64List,
467 [-0x1234567800000000]);
468 msg.setExtension(
469 proto.jspb.test.extendPackedRepeatedFloatList, [1.5]);
470 msg.setExtension(
471 proto.jspb.test.extendPackedRepeatedDoubleList, [-1.5]);
472 msg.setExtension(
473 proto.jspb.test.extendPackedRepeatedBoolList, [true]);
474 msg.setExtension(proto.jspb.test.extendPackedRepeatedForeignEnumList,
475 [proto.jspb.test.ForeignEnum.FOREIGN_FOO]);
Feng Xiaoe841bac2015-12-11 17:09:20 -0800476 }
477
478
479 /**
480 * Tests extension serialization and deserialization.
481 */
482 it('testExtensions', function() {
483 var msg = new proto.jspb.test.TestExtendable();
484 fillExtensions(msg);
485 var encoded = msg.serializeBinary();
486 var decoded = proto.jspb.test.TestExtendable.deserializeBinary(encoded);
487 checkExtensions(decoded);
488 });
489});