OLD | NEW |
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 16 matching lines...) Expand all Loading... |
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 // Test suite is written using Jasmine -- see http://jasmine.github.io/ | 31 // Test suite is written using Jasmine -- see http://jasmine.github.io/ |
32 | 32 |
33 goog.setTestOnly(); | 33 goog.setTestOnly(); |
34 | 34 |
35 goog.require('goog.json'); | 35 goog.require('goog.json'); |
36 goog.require('goog.testing.asserts'); | 36 goog.require('goog.testing.asserts'); |
37 goog.require('goog.userAgent'); | |
38 | 37 |
39 // CommonJS-LoadFromFile: google-protobuf jspb | 38 // CommonJS-LoadFromFile: google-protobuf jspb |
40 goog.require('jspb.Message'); | 39 goog.require('jspb.Message'); |
41 | 40 |
42 // CommonJS-LoadFromFile: test5_pb proto.jspb.exttest.beta | 41 // CommonJS-LoadFromFile: test5_pb proto.jspb.exttest.beta |
43 goog.require('proto.jspb.exttest.beta.floatingStrField'); | 42 goog.require('proto.jspb.exttest.beta.floatingStrField'); |
44 | 43 |
45 // CommonJS-LoadFromFile: test3_pb proto.jspb.exttest | 44 // CommonJS-LoadFromFile: test3_pb proto.jspb.exttest |
46 goog.require('proto.jspb.exttest.floatingMsgField'); | 45 goog.require('proto.jspb.exttest.floatingMsgField'); |
47 | 46 |
(...skipping 12 matching lines...) Expand all Loading... |
60 goog.require('proto.jspb.test.HasExtensions'); | 59 goog.require('proto.jspb.test.HasExtensions'); |
61 goog.require('proto.jspb.test.IndirectExtension'); | 60 goog.require('proto.jspb.test.IndirectExtension'); |
62 goog.require('proto.jspb.test.IsExtension'); | 61 goog.require('proto.jspb.test.IsExtension'); |
63 goog.require('proto.jspb.test.OptionalFields'); | 62 goog.require('proto.jspb.test.OptionalFields'); |
64 goog.require('proto.jspb.test.OuterEnum'); | 63 goog.require('proto.jspb.test.OuterEnum'); |
65 goog.require('proto.jspb.test.OuterMessage.Complex'); | 64 goog.require('proto.jspb.test.OuterMessage.Complex'); |
66 goog.require('proto.jspb.test.Simple1'); | 65 goog.require('proto.jspb.test.Simple1'); |
67 goog.require('proto.jspb.test.Simple2'); | 66 goog.require('proto.jspb.test.Simple2'); |
68 goog.require('proto.jspb.test.SpecialCases'); | 67 goog.require('proto.jspb.test.SpecialCases'); |
69 goog.require('proto.jspb.test.TestClone'); | 68 goog.require('proto.jspb.test.TestClone'); |
70 goog.require('proto.jspb.test.TestEndsWithBytes'); | |
71 goog.require('proto.jspb.test.TestGroup'); | 69 goog.require('proto.jspb.test.TestGroup'); |
72 goog.require('proto.jspb.test.TestGroup1'); | 70 goog.require('proto.jspb.test.TestGroup1'); |
73 goog.require('proto.jspb.test.TestMessageWithOneof'); | 71 goog.require('proto.jspb.test.TestMessageWithOneof'); |
74 goog.require('proto.jspb.test.TestReservedNames'); | 72 goog.require('proto.jspb.test.TestReservedNames'); |
75 goog.require('proto.jspb.test.TestReservedNamesExtension'); | 73 goog.require('proto.jspb.test.TestReservedNamesExtension'); |
76 goog.require('proto.jspb.test.Deeply.Nested.Message'); | |
77 | 74 |
78 // CommonJS-LoadFromFile: test2_pb proto.jspb.test | 75 // CommonJS-LoadFromFile: test2_pb proto.jspb.test |
79 goog.require('proto.jspb.test.ExtensionMessage'); | 76 goog.require('proto.jspb.test.ExtensionMessage'); |
80 goog.require('proto.jspb.test.TestExtensionsMessage'); | 77 goog.require('proto.jspb.test.TestExtensionsMessage'); |
81 goog.require('proto.jspb.test.ForeignNestedFieldMessage'); | |
82 | 78 |
83 | 79 |
84 | 80 |
85 | 81 |
86 describe('Message test suite', function() { | 82 describe('Message test suite', function() { |
87 it('testEmptyProto', function() { | 83 it('testEmptyProto', function() { |
88 var empty1 = new proto.jspb.test.Empty([]); | 84 var empty1 = new proto.jspb.test.Empty([]); |
89 var empty2 = new proto.jspb.test.Empty([]); | 85 var empty2 = new proto.jspb.test.Empty([]); |
90 assertObjectEquals({}, empty1.toObject()); | 86 assertObjectEquals({}, empty1.toObject()); |
91 assertObjectEquals('Message should not be corrupted:', empty2, empty1); | 87 assertObjectEquals('Message should not be corrupted:', empty2, empty1); |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
210 return new proto.jspb.test.DefaultValues(values); | 206 return new proto.jspb.test.DefaultValues(values); |
211 } | 207 } |
212 | 208 |
213 // Test with undefined values, | 209 // Test with undefined values, |
214 // Use push to workaround IE treating undefined array elements as holes. | 210 // Use push to workaround IE treating undefined array elements as holes. |
215 response = makeDefault([undefined, undefined, undefined, undefined]); | 211 response = makeDefault([undefined, undefined, undefined, undefined]); |
216 assertEquals(defaultString, response.getStringField()); | 212 assertEquals(defaultString, response.getStringField()); |
217 assertEquals(true, response.getBoolField()); | 213 assertEquals(true, response.getBoolField()); |
218 assertEquals(11, response.getIntField()); | 214 assertEquals(11, response.getIntField()); |
219 assertEquals(13, response.getEnumField()); | 215 assertEquals(13, response.getEnumField()); |
220 assertFalse(response.hasStringField()); | |
221 assertFalse(response.hasBoolField()); | |
222 assertFalse(response.hasIntField()); | |
223 assertFalse(response.hasEnumField()); | |
224 | 216 |
225 // Test with null values, as would be returned by a JSON serializer. | 217 // Test with null values, as would be returned by a JSON serializer. |
226 response = makeDefault([null, null, null, null]); | 218 response = makeDefault([null, null, null, null]); |
227 assertEquals(defaultString, response.getStringField()); | 219 assertEquals(defaultString, response.getStringField()); |
228 assertEquals(true, response.getBoolField()); | 220 assertEquals(true, response.getBoolField()); |
229 assertEquals(11, response.getIntField()); | 221 assertEquals(11, response.getIntField()); |
230 assertEquals(13, response.getEnumField()); | 222 assertEquals(13, response.getEnumField()); |
231 assertFalse(response.hasStringField()); | |
232 assertFalse(response.hasBoolField()); | |
233 assertFalse(response.hasIntField()); | |
234 assertFalse(response.hasEnumField()); | |
235 | 223 |
236 // Test with false-like values. | 224 // Test with false-like values. |
237 response = makeDefault(['', false, 0, 0]); | 225 response = makeDefault(['', false, 0, 0]); |
238 assertEquals('', response.getStringField()); | 226 assertEquals('', response.getStringField()); |
239 assertEquals(false, response.getBoolField()); | 227 assertEquals(false, response.getBoolField()); |
240 assertEquals(true, response.getIntField() == 0); | 228 assertEquals(true, response.getIntField() == 0); |
241 assertEquals(true, response.getEnumField() == 0); | 229 assertEquals(true, response.getEnumField() == 0); |
242 assertTrue(response.hasStringField()); | |
243 assertTrue(response.hasBoolField()); | |
244 assertTrue(response.hasIntField()); | |
245 assertTrue(response.hasEnumField()); | |
246 | 230 |
247 // Test that clearing the values reverts them to the default state. | 231 // Test that clearing the values reverts them to the default state. |
248 response = makeDefault(['blah', false, 111, 77]); | 232 response = makeDefault(['blah', false, 111, 77]); |
249 response.clearStringField(); response.clearBoolField(); | 233 response.clearStringField(); response.clearBoolField(); |
250 response.clearIntField(); response.clearEnumField(); | 234 response.clearIntField(); response.clearEnumField(); |
251 assertEquals(defaultString, response.getStringField()); | 235 assertEquals(defaultString, response.getStringField()); |
252 assertEquals(true, response.getBoolField()); | 236 assertEquals(true, response.getBoolField()); |
253 assertEquals(11, response.getIntField()); | 237 assertEquals(11, response.getIntField()); |
254 assertEquals(13, response.getEnumField()); | 238 assertEquals(13, response.getEnumField()); |
255 assertFalse(response.hasStringField()); | |
256 assertFalse(response.hasBoolField()); | |
257 assertFalse(response.hasIntField()); | |
258 assertFalse(response.hasEnumField()); | |
259 | 239 |
260 // Test that setFoo(null) clears the values. | 240 // Test that setFoo(null) clears the values. |
261 response = makeDefault(['blah', false, 111, 77]); | 241 response = makeDefault(['blah', false, 111, 77]); |
262 response.setStringField(null); response.setBoolField(null); | 242 response.setStringField(null); response.setBoolField(null); |
263 response.setIntField(undefined); response.setEnumField(undefined); | 243 response.setIntField(undefined); response.setEnumField(undefined); |
264 assertEquals(defaultString, response.getStringField()); | 244 assertEquals(defaultString, response.getStringField()); |
265 assertEquals(true, response.getBoolField()); | 245 assertEquals(true, response.getBoolField()); |
266 assertEquals(11, response.getIntField()); | 246 assertEquals(11, response.getIntField()); |
267 assertEquals(13, response.getEnumField()); | 247 assertEquals(13, response.getEnumField()); |
268 assertFalse(response.hasStringField()); | |
269 assertFalse(response.hasBoolField()); | |
270 assertFalse(response.hasIntField()); | |
271 assertFalse(response.hasEnumField()); | |
272 }); | 248 }); |
273 | 249 |
274 it('testMessageRegistration', /** @suppress {visibility} */ function() { | 250 it('testMessageRegistration', function() { |
275 // goog.require(SomeResponse) will include its library, which will in | 251 // goog.require(SomeResponse) will include its library, which will in |
276 // turn add SomeResponse to the message registry. | 252 // turn add SomeResponse to the message registry. |
277 assertEquals(jspb.Message.registry_['res'], proto.jspb.test.SomeResponse); | 253 assertEquals(jspb.Message.registry_['res'], proto.jspb.test.SomeResponse); |
278 }); | 254 }); |
279 | 255 |
280 it('testClearFields', function() { | 256 it('testClearFields', function() { |
| 257 // We don't set 'proper' defaults, rather, bools, strings, |
| 258 // etc, are cleared to undefined or null and take on the Javascript |
| 259 // meaning for that value. Repeated fields are set to [] when cleared. |
281 var data = ['str', true, [11], [[22], [33]], ['s1', 's2']]; | 260 var data = ['str', true, [11], [[22], [33]], ['s1', 's2']]; |
282 var foo = new proto.jspb.test.OptionalFields(data); | 261 var foo = new proto.jspb.test.OptionalFields(data); |
283 foo.clearAString(); | 262 foo.clearAString(); |
284 foo.clearABool(); | 263 foo.clearABool(); |
285 foo.clearANestedMessage(); | 264 foo.clearANestedMessage(); |
286 foo.clearARepeatedMessageList(); | 265 foo.clearARepeatedMessageList(); |
287 foo.clearARepeatedStringList(); | 266 foo.clearARepeatedStringList(); |
288 assertEquals('', foo.getAString()); | 267 assertUndefined(foo.getAString()); |
289 assertEquals(false, foo.getABool()); | 268 assertUndefined(foo.getABool()); |
290 assertUndefined(foo.getANestedMessage()); | 269 assertUndefined(foo.getANestedMessage()); |
291 assertFalse(foo.hasAString()); | |
292 assertFalse(foo.hasABool()); | |
293 assertObjectEquals([], foo.getARepeatedMessageList()); | 270 assertObjectEquals([], foo.getARepeatedMessageList()); |
294 assertObjectEquals([], foo.getARepeatedStringList()); | 271 assertObjectEquals([], foo.getARepeatedStringList()); |
295 // NOTE: We want the missing fields in 'expected' to be undefined, | 272 // NOTE: We want the missing fields in 'expected' to be undefined, |
296 // but we actually get a sparse array instead. We could use something | 273 // but we actually get a sparse array instead. We could use something |
297 // like [1,undefined,2] to avoid this, except that this is still | 274 // like [1,undefined,2] to avoid this, except that this is still |
298 // sparse on IE. No comment... | 275 // sparse on IE. No comment... |
299 var expected = [,,, [], []]; | 276 var expected = [,,, [], []]; |
300 expected[0] = expected[1] = expected[2] = undefined; | 277 expected[0] = expected[1] = expected[2] = undefined; |
301 assertObjectEquals(expected, foo.toArray()); | 278 assertObjectEquals(expected, foo.toArray()); |
| 279 |
| 280 // Test set(null). We could deprecated this in favor of clear(), but |
| 281 // it's also convenient to have. |
| 282 data = ['str', true, [11], [[22], [33]], ['s1', 's2']]; |
| 283 foo = new proto.jspb.test.OptionalFields(data); |
| 284 foo.setAString(null); |
| 285 foo.setABool(null); |
| 286 foo.setANestedMessage(null); |
| 287 foo.setARepeatedMessageList(null); |
| 288 foo.setARepeatedStringList(null); |
| 289 assertNull(foo.getAString()); |
| 290 assertNull(foo.getABool()); |
| 291 assertNull(foo.getANestedMessage()); |
| 292 assertObjectEquals([], foo.getARepeatedMessageList()); |
| 293 assertObjectEquals([], foo.getARepeatedStringList()); |
| 294 assertObjectEquals([null, null, null, [], []], foo.toArray()); |
| 295 |
| 296 // Test set(undefined). Again, not something we really need, and not |
| 297 // supported directly by our typing, but it should 'do the right thing'. |
| 298 data = ['str', true, [11], [[22], [33]], ['s1', 's2']]; |
| 299 foo = new proto.jspb.test.OptionalFields(data); |
| 300 foo.setAString(undefined); |
| 301 foo.setABool(undefined); |
| 302 foo.setANestedMessage(undefined); |
| 303 foo.setARepeatedMessageList(undefined); |
| 304 foo.setARepeatedStringList(undefined); |
| 305 assertUndefined(foo.getAString()); |
| 306 assertUndefined(foo.getABool()); |
| 307 assertUndefined(foo.getANestedMessage()); |
| 308 assertObjectEquals([], foo.getARepeatedMessageList()); |
| 309 assertObjectEquals([], foo.getARepeatedStringList()); |
| 310 expected = [,,, [], []]; |
| 311 expected[0] = expected[1] = expected[2] = undefined; |
| 312 assertObjectEquals(expected, foo.toArray()); |
302 }); | 313 }); |
303 | 314 |
304 it('testDifferenceRawObject', /** @suppress {visibility} */ function() { | 315 it('testDifferenceRawObject', function() { |
305 var p1 = new proto.jspb.test.HasExtensions(['hi', 'diff', {}]); | 316 var p1 = new proto.jspb.test.HasExtensions(['hi', 'diff', {}]); |
306 var p2 = new proto.jspb.test.HasExtensions(['hi', 'what', | 317 var p2 = new proto.jspb.test.HasExtensions(['hi', 'what', |
307 {1000: 'unique'}]); | 318 {1000: 'unique'}]); |
308 var diff = /** @type {proto.jspb.test.HasExtensions} */ | 319 var diff = /** @type {proto.jspb.test.HasExtensions} */ |
309 (jspb.Message.difference(p1, p2)); | 320 (jspb.Message.difference(p1, p2)); |
310 assertEquals('', diff.getStr1()); | 321 assertUndefined(diff.getStr1()); |
311 assertEquals('what', diff.getStr2()); | 322 assertEquals('what', diff.getStr2()); |
312 assertEquals('', diff.getStr3()); | 323 assertUndefined(diff.getStr3()); |
313 assertEquals('unique', diff.extensionObject_[1000]); | 324 assertEquals('unique', diff.extensionObject_[1000]); |
314 }); | 325 }); |
315 | 326 |
316 it('testEqualsSimple', function() { | 327 it('testEqualsSimple', function() { |
317 var s1 = new proto.jspb.test.Simple1(['hi']); | 328 var s1 = new proto.jspb.test.Simple1(['hi']); |
318 assertTrue(jspb.Message.equals(s1, new proto.jspb.test.Simple1(['hi']))); | 329 assertTrue(jspb.Message.equals(s1, new proto.jspb.test.Simple1(['hi']))); |
319 assertFalse(jspb.Message.equals(s1, new proto.jspb.test.Simple1(['bye']))); | 330 assertFalse(jspb.Message.equals(s1, new proto.jspb.test.Simple1(['bye']))); |
320 var s1b = new proto.jspb.test.Simple1(['hi', ['hello']]); | 331 var s1b = new proto.jspb.test.Simple1(['hi', ['hello']]); |
321 assertTrue(jspb.Message.equals(s1b, | 332 assertTrue(jspb.Message.equals(s1b, |
322 new proto.jspb.test.Simple1(['hi', ['hello']]))); | 333 new proto.jspb.test.Simple1(['hi', ['hello']]))); |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
420 proto.jspb.test.Simple1.prototype.toObject); | 431 proto.jspb.test.Simple1.prototype.toObject); |
421 assertEquals('k', soymap['k'].aString); | 432 assertEquals('k', soymap['k'].aString); |
422 assertArrayEquals(['v'], soymap['k'].aRepeatedStringList); | 433 assertArrayEquals(['v'], soymap['k'].aRepeatedStringList); |
423 var protomap = jspb.Message.toMap([p1, p2], | 434 var protomap = jspb.Message.toMap([p1, p2], |
424 proto.jspb.test.Simple1.prototype.getAString); | 435 proto.jspb.test.Simple1.prototype.getAString); |
425 assertEquals('k', protomap['k'].getAString()); | 436 assertEquals('k', protomap['k'].getAString()); |
426 assertArrayEquals(['v'], protomap['k'].getARepeatedStringList()); | 437 assertArrayEquals(['v'], protomap['k'].getARepeatedStringList()); |
427 }); | 438 }); |
428 | 439 |
429 it('testClone', function() { | 440 it('testClone', function() { |
430 var supportsUint8Array = | |
431 !goog.userAgent.IE || goog.userAgent.isVersionOrHigher('10'); | |
432 var original = new proto.jspb.test.TestClone(); | 441 var original = new proto.jspb.test.TestClone(); |
433 original.setStr('v1'); | 442 original.setStr('v1'); |
434 var simple1 = new proto.jspb.test.Simple1(['x1', ['y1', 'z1']]); | 443 var simple1 = new proto.jspb.test.Simple1(['x1', ['y1', 'z1']]); |
435 var simple2 = new proto.jspb.test.Simple1(['x2', ['y2', 'z2']]); | 444 var simple2 = new proto.jspb.test.Simple1(['x2', ['y2', 'z2']]); |
436 var simple3 = new proto.jspb.test.Simple1(['x3', ['y3', 'z3']]); | 445 var simple3 = new proto.jspb.test.Simple1(['x3', ['y3', 'z3']]); |
437 original.setSimple1(simple1); | 446 original.setSimple1(simple1); |
438 original.setSimple2List([simple2, simple3]); | 447 original.setSimple2List([simple2, simple3]); |
439 var bytes1 = supportsUint8Array ? new Uint8Array([1, 2, 3]) : '123'; | |
440 original.setBytesField(bytes1); | |
441 var extension = new proto.jspb.test.CloneExtension(); | 448 var extension = new proto.jspb.test.CloneExtension(); |
442 extension.setExt('e1'); | 449 extension.setExt('e1'); |
443 original.setExtension(proto.jspb.test.IsExtension.extField, extension); | 450 original.setExtension(proto.jspb.test.IsExtension.extField, extension); |
444 var clone = original.clone(); | 451 var clone = original.cloneMessage(); |
445 assertArrayEquals(['v1',, ['x1', ['y1', 'z1']],, | 452 assertArrayEquals(['v1',, ['x1', ['y1', 'z1']],, |
446 [['x2', ['y2', 'z2']], ['x3', ['y3', 'z3']]], bytes1,, { 100: [, 'e1'] }], | 453 [['x2', ['y2', 'z2']], ['x3', ['y3', 'z3']]],,, { 100: [, 'e1'] }], |
447 clone.toArray()); | 454 clone.toArray()); |
448 clone.setStr('v2'); | 455 clone.setStr('v2'); |
449 var simple4 = new proto.jspb.test.Simple1(['a1', ['b1', 'c1']]); | 456 var simple4 = new proto.jspb.test.Simple1(['a1', ['b1', 'c1']]); |
450 var simple5 = new proto.jspb.test.Simple1(['a2', ['b2', 'c2']]); | 457 var simple5 = new proto.jspb.test.Simple1(['a2', ['b2', 'c2']]); |
451 var simple6 = new proto.jspb.test.Simple1(['a3', ['b3', 'c3']]); | 458 var simple6 = new proto.jspb.test.Simple1(['a3', ['b3', 'c3']]); |
452 clone.setSimple1(simple4); | 459 clone.setSimple1(simple4); |
453 clone.setSimple2List([simple5, simple6]); | 460 clone.setSimple2List([simple5, simple6]); |
454 if (supportsUint8Array) { | |
455 clone.getBytesField()[0] = 4; | |
456 assertObjectEquals(bytes1, original.getBytesField()); | |
457 } | |
458 var bytes2 = supportsUint8Array ? new Uint8Array([4, 5, 6]) : '456'; | |
459 clone.setBytesField(bytes2); | |
460 var newExtension = new proto.jspb.test.CloneExtension(); | 461 var newExtension = new proto.jspb.test.CloneExtension(); |
461 newExtension.setExt('e2'); | 462 newExtension.setExt('e2'); |
462 clone.setExtension(proto.jspb.test.CloneExtension.extField, newExtension); | 463 clone.setExtension(proto.jspb.test.CloneExtension.extField, newExtension); |
463 assertArrayEquals(['v2',, ['a1', ['b1', 'c1']],, | 464 assertArrayEquals(['v2',, ['a1', ['b1', 'c1']],, |
464 [['a2', ['b2', 'c2']], ['a3', ['b3', 'c3']]], bytes2,, { 100: [, 'e2'] }], | 465 [['a2', ['b2', 'c2']], ['a3', ['b3', 'c3']]],,, { 100: [, 'e2'] }], |
465 clone.toArray()); | 466 clone.toArray()); |
466 assertArrayEquals(['v1',, ['x1', ['y1', 'z1']],, | 467 assertArrayEquals(['v1',, ['x1', ['y1', 'z1']],, |
467 [['x2', ['y2', 'z2']], ['x3', ['y3', 'z3']]], bytes1,, { 100: [, 'e1'] }], | 468 [['x2', ['y2', 'z2']], ['x3', ['y3', 'z3']]],,, { 100: [, 'e1'] }], |
468 original.toArray()); | 469 original.toArray()); |
469 }); | 470 }); |
470 | 471 |
471 it('testCopyInto', function() { | 472 it('testCopyInto', function() { |
472 var supportsUint8Array = | |
473 !goog.userAgent.IE || goog.userAgent.isVersionOrHigher('10'); | |
474 var original = new proto.jspb.test.TestClone(); | 473 var original = new proto.jspb.test.TestClone(); |
475 original.setStr('v1'); | 474 original.setStr('v1'); |
476 var dest = new proto.jspb.test.TestClone(); | 475 var dest = new proto.jspb.test.TestClone(); |
477 dest.setStr('override'); | 476 dest.setStr('override'); |
478 var simple1 = new proto.jspb.test.Simple1(['x1', ['y1', 'z1']]); | 477 var simple1 = new proto.jspb.test.Simple1(['x1', ['y1', 'z1']]); |
479 var simple2 = new proto.jspb.test.Simple1(['x2', ['y2', 'z2']]); | 478 var simple2 = new proto.jspb.test.Simple1(['x2', ['y2', 'z2']]); |
480 var simple3 = new proto.jspb.test.Simple1(['x3', ['y3', 'z3']]); | 479 var simple3 = new proto.jspb.test.Simple1(['x3', ['y3', 'z3']]); |
481 var destSimple1 = new proto.jspb.test.Simple1(['ox1', ['oy1', 'oz1']]); | 480 var destSimple1 = new proto.jspb.test.Simple1(['ox1', ['oy1', 'oz1']]); |
482 var destSimple2 = new proto.jspb.test.Simple1(['ox2', ['oy2', 'oz2']]); | 481 var destSimple2 = new proto.jspb.test.Simple1(['ox2', ['oy2', 'oz2']]); |
483 var destSimple3 = new proto.jspb.test.Simple1(['ox3', ['oy3', 'oz3']]); | 482 var destSimple3 = new proto.jspb.test.Simple1(['ox3', ['oy3', 'oz3']]); |
484 original.setSimple1(simple1); | 483 original.setSimple1(simple1); |
485 original.setSimple2List([simple2, simple3]); | 484 original.setSimple2List([simple2, simple3]); |
486 dest.setSimple1(destSimple1); | 485 dest.setSimple1(destSimple1); |
487 dest.setSimple2List([destSimple2, destSimple3]); | 486 dest.setSimple2List([destSimple2, destSimple3]); |
488 var bytes1 = supportsUint8Array ? new Uint8Array([1, 2, 3]) : '123'; | |
489 var bytes2 = supportsUint8Array ? new Uint8Array([4, 5, 6]) : '456'; | |
490 original.setBytesField(bytes1); | |
491 dest.setBytesField(bytes2); | |
492 var extension = new proto.jspb.test.CloneExtension(); | 487 var extension = new proto.jspb.test.CloneExtension(); |
493 extension.setExt('e1'); | 488 extension.setExt('e1'); |
494 original.setExtension(proto.jspb.test.CloneExtension.extField, extension); | 489 original.setExtension(proto.jspb.test.CloneExtension.extField, extension); |
495 | 490 |
496 jspb.Message.copyInto(original, dest); | 491 jspb.Message.copyInto(original, dest); |
497 assertArrayEquals(original.toArray(), dest.toArray()); | 492 assertArrayEquals(original.toArray(), dest.toArray()); |
498 assertEquals('x1', dest.getSimple1().getAString()); | 493 assertEquals('x1', dest.getSimple1().getAString()); |
499 assertEquals('e1', | 494 assertEquals('e1', |
500 dest.getExtension(proto.jspb.test.CloneExtension.extField).getExt()); | 495 dest.getExtension(proto.jspb.test.CloneExtension.extField).getExt()); |
501 dest.getSimple1().setAString('new value'); | 496 dest.getSimple1().setAString('new value'); |
502 assertNotEquals(dest.getSimple1().getAString(), | 497 assertNotEquals(dest.getSimple1().getAString(), |
503 original.getSimple1().getAString()); | 498 original.getSimple1().getAString()); |
504 if (supportsUint8Array) { | |
505 dest.getBytesField()[0] = 7; | |
506 assertObjectEquals(bytes1, original.getBytesField()); | |
507 assertObjectEquals(new Uint8Array([7, 2, 3]), dest.getBytesField()); | |
508 } else { | |
509 dest.setBytesField('789'); | |
510 assertObjectEquals(bytes1, original.getBytesField()); | |
511 assertObjectEquals('789', dest.getBytesField()); | |
512 } | |
513 dest.getExtension(proto.jspb.test.CloneExtension.extField). | 499 dest.getExtension(proto.jspb.test.CloneExtension.extField). |
514 setExt('new value'); | 500 setExt('new value'); |
515 assertNotEquals( | 501 assertNotEquals( |
516 dest.getExtension(proto.jspb.test.CloneExtension.extField).getExt(), | 502 dest.getExtension(proto.jspb.test.CloneExtension.extField).getExt(), |
517 original.getExtension( | 503 original.getExtension( |
518 proto.jspb.test.CloneExtension.extField).getExt()); | 504 proto.jspb.test.CloneExtension.extField).getExt()); |
519 }); | 505 }); |
520 | 506 |
521 it('testCopyInto_notSameType', function() { | 507 it('testCopyInto_notSameType', function() { |
522 var a = new proto.jspb.test.TestClone(); | 508 var a = new proto.jspb.test.TestClone(); |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
669 var msg = new proto.jspb.test.Empty([1, {4: 'hi'}]); | 655 var msg = new proto.jspb.test.Empty([1, {4: 'hi'}]); |
670 // The extensionObject is not moved from its original location. | 656 // The extensionObject is not moved from its original location. |
671 assertArrayEquals([1, {4: 'hi'}], msg.toArray()); | 657 assertArrayEquals([1, {4: 'hi'}], msg.toArray()); |
672 }); | 658 }); |
673 | 659 |
674 it('testInitialization_forwardCompatible', function() { | 660 it('testInitialization_forwardCompatible', function() { |
675 var msg = new proto.jspb.test.Empty([1, 2, 3, {1: 'hi'}]); | 661 var msg = new proto.jspb.test.Empty([1, 2, 3, {1: 'hi'}]); |
676 assertArrayEquals([1, 2, 3, {1: 'hi'}], msg.toArray()); | 662 assertArrayEquals([1, 2, 3, {1: 'hi'}], msg.toArray()); |
677 }); | 663 }); |
678 | 664 |
679 it('testExtendedMessageEnsureObject', | 665 it('testExtendedMessageEnsureObject', function() { |
680 /** @suppress {visibility} */ function() { | 666 var data = new proto.jspb.test.HasExtensions(['str1', |
681 var data = | 667 {'a_key': 'an_object'}]); |
682 new proto.jspb.test.HasExtensions(['str1', {'a_key': 'an_object'}]); | 668 assertEquals('an_object', data.extensionObject_['a_key']); |
683 assertEquals('an_object', data.extensionObject_['a_key']); | 669 }); |
684 }); | |
685 | 670 |
686 it('testToObject_hasExtensionField', function() { | 671 it('testToObject_hasExtensionField', function() { |
687 var data = new proto.jspb.test.HasExtensions(['str1', {100: ['ext1']}]); | 672 var data = new proto.jspb.test.HasExtensions(['str1', {100: ['ext1']}]); |
688 var obj = data.toObject(); | 673 var obj = data.toObject(); |
689 assertEquals('str1', obj.str1); | 674 assertEquals('str1', obj.str1); |
690 assertEquals('ext1', obj.extField.ext1); | 675 assertEquals('ext1', obj.extField.ext1); |
691 }); | 676 }); |
692 | 677 |
693 it('testGetExtension', function() { | 678 it('testGetExtension', function() { |
694 var data = new proto.jspb.test.HasExtensions(['str1', {100: ['ext1']}]); | 679 var data = new proto.jspb.test.HasExtensions(['str1', {100: ['ext1']}]); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
761 assertEquals( | 746 assertEquals( |
762 proto.jspb.test.TestMessageWithOneof.RecursiveOneofCase. | 747 proto.jspb.test.TestMessageWithOneof.RecursiveOneofCase. |
763 RECURSIVE_ONEOF_NOT_SET, | 748 RECURSIVE_ONEOF_NOT_SET, |
764 message.getRecursiveOneofCase()); | 749 message.getRecursiveOneofCase()); |
765 }); | 750 }); |
766 | 751 |
767 it('testInitializeMessageWithSingleValueSetInOneof', function() { | 752 it('testInitializeMessageWithSingleValueSetInOneof', function() { |
768 var message = new proto.jspb.test.TestMessageWithOneof([,, 'x']); | 753 var message = new proto.jspb.test.TestMessageWithOneof([,, 'x']); |
769 | 754 |
770 assertEquals('x', message.getPone()); | 755 assertEquals('x', message.getPone()); |
771 assertEquals('', message.getPthree()); | 756 assertUndefined(message.getPthree()); |
772 assertEquals( | 757 assertEquals( |
773 proto.jspb.test.TestMessageWithOneof.PartialOneofCase.PONE, | 758 proto.jspb.test.TestMessageWithOneof.PartialOneofCase.PONE, |
774 message.getPartialOneofCase()); | 759 message.getPartialOneofCase()); |
775 }); | 760 }); |
776 | 761 |
777 it('testKeepsLastWireValueSetInUnion_multipleValues', function() { | 762 it('testKeepsLastWireValueSetInUnion_multipleValues', function() { |
778 var message = new proto.jspb.test.TestMessageWithOneof([,, 'x',, 'y']); | 763 var message = new proto.jspb.test.TestMessageWithOneof([,, 'x',, 'y']); |
779 | 764 |
780 assertEquals('', message.getPone()); | 765 assertUndefined('x', message.getPone()); |
781 assertEquals('y', message.getPthree()); | 766 assertEquals('y', message.getPthree()); |
782 assertEquals( | 767 assertEquals( |
783 proto.jspb.test.TestMessageWithOneof.PartialOneofCase.PTHREE, | 768 proto.jspb.test.TestMessageWithOneof.PartialOneofCase.PTHREE, |
784 message.getPartialOneofCase()); | 769 message.getPartialOneofCase()); |
785 }); | 770 }); |
786 | 771 |
787 it('testSettingOneofFieldClearsOthers', function() { | 772 it('testSettingOneofFieldClearsOthers', function() { |
788 var message = new proto.jspb.test.TestMessageWithOneof; | 773 var message = new proto.jspb.test.TestMessageWithOneof; |
789 assertEquals('', message.getPone()); | 774 assertUndefined(message.getPone()); |
790 assertEquals('', message.getPthree()); | 775 assertUndefined(message.getPthree()); |
791 assertFalse(message.hasPone()); | |
792 assertFalse(message.hasPthree()); | |
793 | 776 |
794 message.setPone('hi'); | 777 message.setPone('hi'); |
795 assertEquals('hi', message.getPone()); | 778 assertEquals('hi', message.getPone()); |
796 assertEquals('', message.getPthree()); | 779 assertUndefined(message.getPthree()); |
797 assertTrue(message.hasPone()); | |
798 assertFalse(message.hasPthree()); | |
799 | 780 |
800 message.setPthree('bye'); | 781 message.setPthree('bye'); |
801 assertEquals('', message.getPone()); | 782 assertUndefined(message.getPone()); |
802 assertEquals('bye', message.getPthree()); | 783 assertEquals('bye', message.getPthree()); |
803 assertFalse(message.hasPone()); | |
804 assertTrue(message.hasPthree()); | |
805 }); | 784 }); |
806 | 785 |
807 it('testSettingOneofFieldDoesNotClearFieldsFromOtherUnions', function() { | 786 it('testSettingOneofFieldDoesNotClearFieldsFromOtherUnions', function() { |
808 var other = new proto.jspb.test.TestMessageWithOneof; | 787 var other = new proto.jspb.test.TestMessageWithOneof; |
809 var message = new proto.jspb.test.TestMessageWithOneof; | 788 var message = new proto.jspb.test.TestMessageWithOneof; |
810 assertEquals('', message.getPone()); | 789 assertUndefined(message.getPone()); |
811 assertEquals('', message.getPthree()); | 790 assertUndefined(message.getPthree()); |
812 assertUndefined(message.getRone()); | 791 assertUndefined(message.getRone()); |
813 assertFalse(message.hasPone()); | |
814 assertFalse(message.hasPthree()); | |
815 | 792 |
816 message.setPone('hi'); | 793 message.setPone('hi'); |
817 message.setRone(other); | 794 message.setRone(other); |
818 assertEquals('hi', message.getPone()); | 795 assertEquals('hi', message.getPone()); |
819 assertEquals('', message.getPthree()); | 796 assertUndefined(message.getPthree()); |
820 assertEquals(other, message.getRone()); | 797 assertEquals(other, message.getRone()); |
821 assertTrue(message.hasPone()); | |
822 assertFalse(message.hasPthree()); | |
823 | 798 |
824 message.setPthree('bye'); | 799 message.setPthree('bye'); |
825 assertEquals('', message.getPone()); | 800 assertUndefined(message.getPone()); |
826 assertEquals('bye', message.getPthree()); | 801 assertEquals('bye', message.getPthree()); |
827 assertEquals(other, message.getRone()); | 802 assertEquals(other, message.getRone()); |
828 assertFalse(message.hasPone()); | |
829 assertTrue(message.hasPthree()); | |
830 }); | 803 }); |
831 | 804 |
832 it('testUnsetsOneofCaseWhenFieldIsCleared', function() { | 805 it('testUnsetsOneofCaseWhenFieldIsCleared', function() { |
833 var message = new proto.jspb.test.TestMessageWithOneof; | 806 var message = new proto.jspb.test.TestMessageWithOneof; |
834 assertEquals( | 807 assertEquals( |
835 proto.jspb.test.TestMessageWithOneof.PartialOneofCase. | 808 proto.jspb.test.TestMessageWithOneof.PartialOneofCase. |
836 PARTIAL_ONEOF_NOT_SET, | 809 PARTIAL_ONEOF_NOT_SET, |
837 message.getPartialOneofCase()); | 810 message.getPartialOneofCase()); |
838 | 811 |
839 message.setPone('hi'); | 812 message.setPone('hi'); |
840 assertEquals( | 813 assertEquals( |
841 proto.jspb.test.TestMessageWithOneof.PartialOneofCase.PONE, | 814 proto.jspb.test.TestMessageWithOneof.PartialOneofCase.PONE, |
842 message.getPartialOneofCase()); | 815 message.getPartialOneofCase()); |
843 | 816 |
844 message.clearPone(); | 817 message.clearPone(); |
845 assertEquals( | 818 assertEquals( |
846 proto.jspb.test.TestMessageWithOneof.PartialOneofCase. | 819 proto.jspb.test.TestMessageWithOneof.PartialOneofCase. |
847 PARTIAL_ONEOF_NOT_SET, | 820 PARTIAL_ONEOF_NOT_SET, |
848 message.getPartialOneofCase()); | 821 message.getPartialOneofCase()); |
849 }); | 822 }); |
850 | 823 |
851 it('testMessageWithDefaultOneofValues', function() { | 824 it('testMessageWithDefaultOneofValues', function() { |
852 var message = new proto.jspb.test.TestMessageWithOneof; | 825 var message = new proto.jspb.test.TestMessageWithOneof; |
853 assertEquals(1234, message.getAone()); | 826 assertEquals(1234, message.getAone()); |
854 assertEquals(0, message.getAtwo()); | 827 assertUndefined(message.getAtwo()); |
855 assertEquals( | 828 assertEquals( |
856 proto.jspb.test.TestMessageWithOneof.DefaultOneofACase | 829 proto.jspb.test.TestMessageWithOneof.DefaultOneofACase |
857 .DEFAULT_ONEOF_A_NOT_SET, | 830 .DEFAULT_ONEOF_A_NOT_SET, |
858 message.getDefaultOneofACase()); | 831 message.getDefaultOneofACase()); |
859 | 832 |
860 message.setAone(567); | 833 message.setAone(567); |
861 assertEquals(567, message.getAone()); | 834 assertEquals(567, message.getAone()); |
862 assertEquals(0, message.getAtwo()); | 835 assertUndefined(message.getAtwo()); |
863 assertEquals( | 836 assertEquals( |
864 proto.jspb.test.TestMessageWithOneof.DefaultOneofACase.AONE, | 837 proto.jspb.test.TestMessageWithOneof.DefaultOneofACase.AONE, |
865 message.getDefaultOneofACase()); | 838 message.getDefaultOneofACase()); |
866 | 839 |
867 message.setAtwo(890); | 840 message.setAtwo(890); |
868 assertEquals(1234, message.getAone()); | 841 assertEquals(1234, message.getAone()); |
869 assertEquals(890, message.getAtwo()); | 842 assertEquals(890, message.getAtwo()); |
870 assertEquals( | 843 assertEquals( |
871 proto.jspb.test.TestMessageWithOneof.DefaultOneofACase.ATWO, | 844 proto.jspb.test.TestMessageWithOneof.DefaultOneofACase.ATWO, |
872 message.getDefaultOneofACase()); | 845 message.getDefaultOneofACase()); |
873 | 846 |
874 message.clearAtwo(); | 847 message.clearAtwo(); |
875 assertEquals(1234, message.getAone()); | 848 assertEquals(1234, message.getAone()); |
876 assertEquals(0, message.getAtwo()); | 849 assertUndefined(message.getAtwo()); |
877 assertEquals( | 850 assertEquals( |
878 proto.jspb.test.TestMessageWithOneof.DefaultOneofACase | 851 proto.jspb.test.TestMessageWithOneof.DefaultOneofACase |
879 .DEFAULT_ONEOF_A_NOT_SET, | 852 .DEFAULT_ONEOF_A_NOT_SET, |
880 message.getDefaultOneofACase()); | 853 message.getDefaultOneofACase()); |
881 }); | 854 }); |
882 | 855 |
883 it('testMessageWithDefaultOneofValues_defaultNotOnFirstField', function() { | 856 it('testMessageWithDefaultOneofValues_defaultNotOnFirstField', function() { |
884 var message = new proto.jspb.test.TestMessageWithOneof; | 857 var message = new proto.jspb.test.TestMessageWithOneof; |
885 assertEquals(0, message.getBone()); | 858 assertUndefined(message.getBone()); |
886 assertEquals(1234, message.getBtwo()); | 859 assertEquals(1234, message.getBtwo()); |
887 assertFalse(message.hasBone()); | |
888 assertFalse(message.hasBtwo()); | |
889 assertEquals( | 860 assertEquals( |
890 proto.jspb.test.TestMessageWithOneof.DefaultOneofBCase | 861 proto.jspb.test.TestMessageWithOneof.DefaultOneofBCase |
891 .DEFAULT_ONEOF_B_NOT_SET, | 862 .DEFAULT_ONEOF_B_NOT_SET, |
892 message.getDefaultOneofBCase()); | 863 message.getDefaultOneofBCase()); |
893 | 864 |
894 message.setBone(2); | 865 message.setBone(2); |
895 assertEquals(2, message.getBone()); | 866 assertEquals(2, message.getBone()); |
896 assertEquals(1234, message.getBtwo()); | 867 assertEquals(1234, message.getBtwo()); |
897 assertTrue(message.hasBone()); | |
898 assertFalse(message.hasBtwo()); | |
899 assertEquals( | 868 assertEquals( |
900 proto.jspb.test.TestMessageWithOneof.DefaultOneofBCase.BONE, | 869 proto.jspb.test.TestMessageWithOneof.DefaultOneofBCase.BONE, |
901 message.getDefaultOneofBCase()); | 870 message.getDefaultOneofBCase()); |
902 | 871 |
903 message.setBtwo(3); | 872 message.setBtwo(3); |
904 assertEquals(0, message.getBone()); | 873 assertUndefined(message.getBone()); |
905 assertFalse(message.hasBone()); | |
906 assertTrue(message.hasBtwo()); | |
907 assertEquals(3, message.getBtwo()); | 874 assertEquals(3, message.getBtwo()); |
908 assertEquals( | 875 assertEquals( |
909 proto.jspb.test.TestMessageWithOneof.DefaultOneofBCase.BTWO, | 876 proto.jspb.test.TestMessageWithOneof.DefaultOneofBCase.BTWO, |
910 message.getDefaultOneofBCase()); | 877 message.getDefaultOneofBCase()); |
911 | 878 |
912 message.clearBtwo(); | 879 message.clearBtwo(); |
913 assertEquals(0, message.getBone()); | 880 assertUndefined(message.getBone()); |
914 assertFalse(message.hasBone()); | |
915 assertFalse(message.hasBtwo()); | |
916 assertEquals(1234, message.getBtwo()); | 881 assertEquals(1234, message.getBtwo()); |
917 assertEquals( | 882 assertEquals( |
918 proto.jspb.test.TestMessageWithOneof.DefaultOneofBCase | 883 proto.jspb.test.TestMessageWithOneof.DefaultOneofBCase |
919 .DEFAULT_ONEOF_B_NOT_SET, | 884 .DEFAULT_ONEOF_B_NOT_SET, |
920 message.getDefaultOneofBCase()); | 885 message.getDefaultOneofBCase()); |
921 }); | 886 }); |
922 | 887 |
923 it('testInitializeMessageWithOneofDefaults', function() { | 888 it('testInitializeMessageWithOneofDefaults', function() { |
924 var message = | 889 var message = |
925 new proto.jspb.test.TestMessageWithOneof(new Array(9).concat(567)); | 890 new proto.jspb.test.TestMessageWithOneof(new Array(9).concat(567)); |
926 assertEquals(567, message.getAone()); | 891 assertEquals(567, message.getAone()); |
927 assertEquals(0, message.getAtwo()); | 892 assertUndefined(message.getAtwo()); |
928 assertEquals( | 893 assertEquals( |
929 proto.jspb.test.TestMessageWithOneof.DefaultOneofACase.AONE, | 894 proto.jspb.test.TestMessageWithOneof.DefaultOneofACase.AONE, |
930 message.getDefaultOneofACase()); | 895 message.getDefaultOneofACase()); |
931 | 896 |
932 message = | 897 message = |
933 new proto.jspb.test.TestMessageWithOneof(new Array(10).concat(890)); | 898 new proto.jspb.test.TestMessageWithOneof(new Array(10).concat(890)); |
934 assertEquals(1234, message.getAone()); | 899 assertEquals(1234, message.getAone()); |
935 assertEquals(890, message.getAtwo()); | 900 assertEquals(890, message.getAtwo()); |
936 assertEquals( | 901 assertEquals( |
937 proto.jspb.test.TestMessageWithOneof.DefaultOneofACase.ATWO, | 902 proto.jspb.test.TestMessageWithOneof.DefaultOneofACase.ATWO, |
(...skipping 15 matching lines...) Expand all Loading... |
953 message = | 918 message = |
954 new proto.jspb.test.TestMessageWithOneof(new Array(11).concat(567)); | 919 new proto.jspb.test.TestMessageWithOneof(new Array(11).concat(567)); |
955 assertEquals(567, message.getBone()); | 920 assertEquals(567, message.getBone()); |
956 assertEquals(1234, message.getBtwo()); | 921 assertEquals(1234, message.getBtwo()); |
957 assertEquals( | 922 assertEquals( |
958 proto.jspb.test.TestMessageWithOneof.DefaultOneofBCase.BONE, | 923 proto.jspb.test.TestMessageWithOneof.DefaultOneofBCase.BONE, |
959 message.getDefaultOneofBCase()); | 924 message.getDefaultOneofBCase()); |
960 | 925 |
961 message = | 926 message = |
962 new proto.jspb.test.TestMessageWithOneof(new Array(12).concat(890)); | 927 new proto.jspb.test.TestMessageWithOneof(new Array(12).concat(890)); |
963 assertEquals(0, message.getBone()); | 928 assertUndefined(message.getBone()); |
964 assertEquals(890, message.getBtwo()); | 929 assertEquals(890, message.getBtwo()); |
965 assertEquals( | 930 assertEquals( |
966 proto.jspb.test.TestMessageWithOneof.DefaultOneofBCase.BTWO, | 931 proto.jspb.test.TestMessageWithOneof.DefaultOneofBCase.BTWO, |
967 message.getDefaultOneofBCase()); | 932 message.getDefaultOneofBCase()); |
968 | 933 |
969 message = new proto.jspb.test.TestMessageWithOneof( | 934 message = new proto.jspb.test.TestMessageWithOneof( |
970 new Array(11).concat(567, 890)); | 935 new Array(11).concat(567, 890)); |
971 assertEquals(0, message.getBone()); | 936 assertUndefined(message.getBone()); |
972 assertEquals(890, message.getBtwo()); | 937 assertEquals(890, message.getBtwo()); |
973 assertEquals( | 938 assertEquals( |
974 proto.jspb.test.TestMessageWithOneof.DefaultOneofBCase.BTWO, | 939 proto.jspb.test.TestMessageWithOneof.DefaultOneofBCase.BTWO, |
975 message.getDefaultOneofBCase()); | 940 message.getDefaultOneofBCase()); |
976 }); | 941 }); |
977 | 942 |
978 it('testOneofContainingAnotherMessage', function() { | 943 it('testOneofContainingAnotherMessage', function() { |
979 var message = new proto.jspb.test.TestMessageWithOneof; | 944 var message = new proto.jspb.test.TestMessageWithOneof; |
980 assertEquals( | 945 assertEquals( |
981 proto.jspb.test.TestMessageWithOneof.RecursiveOneofCase. | 946 proto.jspb.test.TestMessageWithOneof.RecursiveOneofCase. |
982 RECURSIVE_ONEOF_NOT_SET, | 947 RECURSIVE_ONEOF_NOT_SET, |
983 message.getRecursiveOneofCase()); | 948 message.getRecursiveOneofCase()); |
984 | 949 |
985 var other = new proto.jspb.test.TestMessageWithOneof; | 950 var other = new proto.jspb.test.TestMessageWithOneof; |
986 message.setRone(other); | 951 message.setRone(other); |
987 assertEquals(other, message.getRone()); | 952 assertEquals(other, message.getRone()); |
988 assertEquals('', message.getRtwo()); | 953 assertUndefined(message.getRtwo()); |
989 assertEquals( | 954 assertEquals( |
990 proto.jspb.test.TestMessageWithOneof.RecursiveOneofCase.RONE, | 955 proto.jspb.test.TestMessageWithOneof.RecursiveOneofCase.RONE, |
991 message.getRecursiveOneofCase()); | 956 message.getRecursiveOneofCase()); |
992 | 957 |
993 message.setRtwo('hi'); | 958 message.setRtwo('hi'); |
994 assertUndefined(message.getRone()); | 959 assertUndefined(message.getRone()); |
995 assertEquals('hi', message.getRtwo()); | 960 assertEquals('hi', message.getRtwo()); |
996 assertEquals( | 961 assertEquals( |
997 proto.jspb.test.TestMessageWithOneof.RecursiveOneofCase.RTWO, | 962 proto.jspb.test.TestMessageWithOneof.RecursiveOneofCase.RTWO, |
998 message.getRecursiveOneofCase()); | 963 message.getRecursiveOneofCase()); |
999 }); | 964 }); |
1000 | 965 |
1001 it('testQueryingOneofCaseEnsuresOnlyOneFieldIsSetInUnderlyingArray', | 966 it('testQueryingOneofCaseEnsuresOnlyOneFieldIsSetInUnderlyingArray', |
1002 function() { | 967 function() { |
1003 var message = new proto.jspb.test.TestMessageWithOneof; | 968 var message = new proto.jspb.test.TestMessageWithOneof; |
1004 message.setPone('x'); | 969 message.setPone('x'); |
1005 assertEquals('x', message.getPone()); | 970 assertEquals('x', message.getPone()); |
1006 assertEquals('', message.getPthree()); | 971 assertUndefined(message.getPthree()); |
1007 assertEquals( | 972 assertEquals( |
1008 proto.jspb.test.TestMessageWithOneof.PartialOneofCase.PONE, | 973 proto.jspb.test.TestMessageWithOneof.PartialOneofCase.PONE, |
1009 message.getPartialOneofCase()); | 974 message.getPartialOneofCase()); |
1010 | 975 |
1011 var array = message.toArray(); | 976 var array = message.toArray(); |
1012 assertEquals('x', array[2]); | 977 assertEquals('x', array[2]); |
1013 assertUndefined(array[4]); | 978 assertUndefined(array[4]); |
1014 array[4] = 'y'; | 979 array[4] = 'y'; |
1015 | 980 |
1016 assertEquals( | 981 assertEquals( |
(...skipping 18 matching lines...) Expand all Loading... |
1035 assertNan(message.getRepeatedFloatFieldList()[0]); | 1000 assertNan(message.getRepeatedFloatFieldList()[0]); |
1036 assertNan(message.getRepeatedFloatFieldList()[1]); | 1001 assertNan(message.getRepeatedFloatFieldList()[1]); |
1037 assertNan(message.getDefaultFloatField()); | 1002 assertNan(message.getDefaultFloatField()); |
1038 assertNan(message.getOptionalDoubleField()); | 1003 assertNan(message.getOptionalDoubleField()); |
1039 assertNan(message.getRequiredDoubleField()); | 1004 assertNan(message.getRequiredDoubleField()); |
1040 assertNan(message.getRepeatedDoubleFieldList()[0]); | 1005 assertNan(message.getRepeatedDoubleFieldList()[0]); |
1041 assertNan(message.getRepeatedDoubleFieldList()[1]); | 1006 assertNan(message.getRepeatedDoubleFieldList()[1]); |
1042 assertNan(message.getDefaultDoubleField()); | 1007 assertNan(message.getDefaultDoubleField()); |
1043 }); | 1008 }); |
1044 | 1009 |
1045 // Verify that we can successfully use a field referring to a nested message | |
1046 // from a different .proto file. | |
1047 it('testForeignNestedMessage', function() { | |
1048 var msg = new proto.jspb.test.ForeignNestedFieldMessage(); | |
1049 var nested = new proto.jspb.test.Deeply.Nested.Message(); | |
1050 nested.setCount(5); | |
1051 msg.setDeeplyNestedMessage(nested); | |
1052 assertEquals(5, msg.getDeeplyNestedMessage().getCount()); | |
1053 | |
1054 // After a serialization-deserialization round trip we should get back the | |
1055 // same data we started with. | |
1056 var serialized = msg.serializeBinary(); | |
1057 var deserialized = | |
1058 proto.jspb.test.ForeignNestedFieldMessage.deserializeBinary(serialized); | |
1059 assertEquals(5, deserialized.getDeeplyNestedMessage().getCount()); | |
1060 }); | |
1061 | |
1062 }); | 1010 }); |
OLD | NEW |