UNPKG

sku-pg

Version:

Skulpt is a Javascript implementation of Python 2.x. Python that runs in your browser!

336 lines (274 loc) 10.3 kB
<!DOCTYPE html> <html> <!-- Copyright 2008 The Closure Library Authors. All Rights Reserved. Use of this source code is governed by an Apache 2.0 License. See the COPYING file for details. --> <!-- Author: jschorr@google.com (Joseph Schorr) --> <head> <title>Closure Unit Tests - goog.proto2 - objectserializer.js</title> <script src="../base.js"></script> <script> goog.require('goog.proto2.ObjectSerializer'); goog.require('goog.testing.jsunit'); goog.require('proto2.TestAllTypes'); </script> </head> <body> <script> function testSerialization() { var message = new proto2.TestAllTypes(); // Set the fields. // Singular. message.setOptionalInt32(101); message.setOptionalInt64(102); message.setOptionalUint32(103); message.setOptionalUint64(104); message.setOptionalSint32(105); message.setOptionalSint64(106); message.setOptionalFixed32(107); message.setOptionalFixed64(108); message.setOptionalSfixed32(109); message.setOptionalSfixed64(110); message.setOptionalFloat(111.5); message.setOptionalDouble(112.5); message.setOptionalBool(true); message.setOptionalString('test'); message.setOptionalBytes('abcd'); var group = new proto2.TestAllTypes.OptionalGroup(); group.setA(111); message.setOptionalgroup(group); var nestedMessage = new proto2.TestAllTypes.NestedMessage(); nestedMessage.setB(112); message.setOptionalNestedMessage(nestedMessage); message.setOptionalNestedEnum(proto2.TestAllTypes.NestedEnum.FOO); // Repeated. message.addRepeatedInt32(201); message.addRepeatedInt32(202); // Serialize to a simplified object. var simplified = new goog.proto2.ObjectSerializer().serialize(message); // Assert that everything serialized properly. assertEquals(101, simplified[1]); assertEquals(102, simplified[2]); assertEquals(103, simplified[3]); assertEquals(104, simplified[4]); assertEquals(105, simplified[5]); assertEquals(106, simplified[6]); assertEquals(107, simplified[7]); assertEquals(108, simplified[8]); assertEquals(109, simplified[9]); assertEquals(110, simplified[10]); assertEquals(111.5, simplified[11]); assertEquals(112.5, simplified[12]); assertEquals(true, simplified[13]); assertEquals('test', simplified[14]); assertEquals('abcd', simplified[15]); assertEquals(111, simplified[16][17]); assertEquals(112, simplified[18][1]); assertEquals(proto2.TestAllTypes.NestedEnum.FOO, simplified[21]); assertEquals(201, simplified[31][0]); assertEquals(202, simplified[31][1]); // Serialize to a simplified object (with key as name). simplified = new goog.proto2.ObjectSerializer( goog.proto2.ObjectSerializer.KeyOption.NAME).serialize(message); // Assert that everything serialized properly. assertEquals(101, simplified['optional_int32']); assertEquals(102, simplified['optional_int64']); assertEquals(103, simplified['optional_uint32']); assertEquals(104, simplified['optional_uint64']); assertEquals(105, simplified['optional_sint32']); assertEquals(106, simplified['optional_sint64']); assertEquals(107, simplified['optional_fixed32']); assertEquals(108, simplified['optional_fixed64']); assertEquals(109, simplified['optional_sfixed32']); assertEquals(110, simplified['optional_sfixed64']); assertEquals(111.5, simplified['optional_float']); assertEquals(112.5, simplified['optional_double']); assertEquals(true, simplified['optional_bool']); assertEquals('test', simplified['optional_string']); assertEquals('abcd', simplified['optional_bytes']); assertEquals(111, simplified['optionalgroup']['a']); assertEquals(112, simplified['optional_nested_message']['b']); assertEquals(proto2.TestAllTypes.NestedEnum.FOO, simplified['optional_nested_enum']); assertEquals(201, simplified['repeated_int32'][0]); assertEquals(202, simplified['repeated_int32'][1]); } function testSerializationOfUnknown() { var message = new proto2.TestAllTypes(); // Set the fields. // Known. message.setOptionalInt32(101); message.setOptionalInt64(102); message.addRepeatedInt32(201); message.addRepeatedInt32(202); // Unknown. message.setUnknown(1000, 301); message.setUnknown(1001, 302); // Serialize. var simplified = new goog.proto2.ObjectSerializer().serialize(message); assertEquals(101, simplified['1']); assertEquals(102, simplified['2']); assertEquals(201, simplified['31'][0]); assertEquals(202, simplified['31'][1]); assertEquals(301, simplified['1000']); assertEquals(302, simplified['1001']); } function testDeserializationOfUnknown() { var simplified = { 1: 101, 2: 102, 1000: 103, 1001: 104 }; var serializer = new goog.proto2.ObjectSerializer(); var message = serializer.deserialize( proto2.TestAllTypes.getDescriptor(), simplified); assertNotNull(message); assertTrue(message.hasOptionalInt32()); assertTrue(message.hasOptionalInt64()); assertEquals(101, message.getOptionalInt32()); assertEquals(102, message.getOptionalInt64()); var count = 0; message.forEachUnknown(function(tag, value) { if (tag == 1000) { assertEquals(103, value); } if (tag == 1001) { assertEquals(104, value); } ++count; }); assertEquals(2, count); }; function testDeserializationRepeated() { var simplified = { 31: [101, 102], 41: [201.5, 202.5, 203.5], 42: [], 43: [ true, false ], 44: [ 'he', 'llo' ], 46: [ { 47: [101] } , { 47: [102] } ], 48: [ { 1: 201 }, { 1: 202 } ] } var serializer = new goog.proto2.ObjectSerializer(); var message = serializer.deserialize( proto2.TestAllTypes.getDescriptor(), simplified); assertNotNull(message); // Ensure the fields are set as expected. assertTrue(message.hasRepeatedInt32()); assertTrue(message.hasRepeatedFloat()); assertFalse(message.hasRepeatedDouble()); assertTrue(message.hasRepeatedBool()); assertTrue(message.hasRepeatedgroup()); assertTrue(message.hasRepeatedNestedMessage()); // Ensure the counts match. assertEquals(2, message.repeatedInt32Count()); assertEquals(3, message.repeatedFloatCount()); assertEquals(0, message.repeatedDoubleCount()); assertEquals(2, message.repeatedBoolCount()); assertEquals(2, message.repeatedStringCount()); assertEquals(2, message.repeatedgroupCount()); assertEquals(2, message.repeatedNestedMessageCount()); // Ensure the values match. assertEquals(101, message.getRepeatedInt32(0)); assertEquals(102, message.getRepeatedInt32(1)); assertEquals(201.5, message.getRepeatedFloat(0)); assertEquals(202.5, message.getRepeatedFloat(1)); assertEquals(203.5, message.getRepeatedFloat(2)); assertEquals(true, message.getRepeatedBool(0)); assertEquals(false, message.getRepeatedBool(1)); assertEquals('he', message.getRepeatedString(0)); assertEquals('llo', message.getRepeatedString(1)); assertEquals(101, message.getRepeatedgroup(0).getA(0)); assertEquals(102, message.getRepeatedgroup(1).getA(0)); assertEquals(201, message.getRepeatedNestedMessage(0).getB()); assertEquals(202, message.getRepeatedNestedMessage(1).getB()); } function testDeserialization() { var simplified = { 1: 101, 2: 102, 3: 103, 4: 104, 5: 105, 6: 106, 7: 107, 8: 108, 9: 109, 10: 110, 11: 111.5, 12: 112.5, 13: true, 14: 'test', 15: 'abcd', 16: { 17 : 113 }, 18: { 1 : 114 }, 21: proto2.TestAllTypes.NestedEnum.FOO }; var serializer = new goog.proto2.ObjectSerializer(); var message = serializer.deserialize( proto2.TestAllTypes.getDescriptor(), simplified); assertNotNull(message); assertTrue(message.hasOptionalInt32()); assertTrue(message.hasOptionalInt64()); assertTrue(message.hasOptionalUint32()); assertTrue(message.hasOptionalUint64()); assertTrue(message.hasOptionalSint32()); assertTrue(message.hasOptionalSint64()); assertTrue(message.hasOptionalFixed32()); assertTrue(message.hasOptionalFixed64()); assertTrue(message.hasOptionalSfixed32()); assertTrue(message.hasOptionalSfixed64()); assertTrue(message.hasOptionalFloat()); assertTrue(message.hasOptionalDouble()); assertTrue(message.hasOptionalBool()); assertTrue(message.hasOptionalString()); assertTrue(message.hasOptionalBytes()); assertTrue(message.hasOptionalgroup()); assertTrue(message.hasOptionalNestedMessage()); assertTrue(message.hasOptionalNestedEnum()); assertEquals(1, message.optionalInt32Count()); assertEquals(1, message.optionalInt64Count()); assertEquals(1, message.optionalUint32Count()); assertEquals(1, message.optionalUint64Count()); assertEquals(1, message.optionalSint32Count()); assertEquals(1, message.optionalSint64Count()); assertEquals(1, message.optionalFixed32Count()); assertEquals(1, message.optionalFixed64Count()); assertEquals(1, message.optionalSfixed32Count()); assertEquals(1, message.optionalSfixed64Count()); assertEquals(1, message.optionalFloatCount()); assertEquals(1, message.optionalDoubleCount()); assertEquals(1, message.optionalBoolCount()); assertEquals(1, message.optionalStringCount()); assertEquals(1, message.optionalBytesCount()); assertEquals(1, message.optionalgroupCount()); assertEquals(1, message.optionalNestedMessageCount()); assertEquals(1, message.optionalNestedEnumCount()); assertEquals(101, message.getOptionalInt32()); assertEquals(102, message.getOptionalInt64()); assertEquals(103, message.getOptionalUint32()); assertEquals(104, message.getOptionalUint64()); assertEquals(105, message.getOptionalSint32()); assertEquals(106, message.getOptionalSint64()); assertEquals(107, message.getOptionalFixed32()); assertEquals(108, message.getOptionalFixed64()); assertEquals(109, message.getOptionalSfixed32()); assertEquals(110, message.getOptionalSfixed64()); assertEquals(111.5, message.getOptionalFloat()); assertEquals(112.5, message.getOptionalDouble()); assertEquals(true, message.getOptionalBool()); assertEquals('test', message.getOptionalString()); assertEquals('abcd', message.getOptionalBytes()); assertEquals(113, message.getOptionalgroup().getA()); assertEquals(114, message.getOptionalNestedMessage().getB()); assertEquals(proto2.TestAllTypes.NestedEnum.FOO, message.getOptionalNestedEnum()); } </script> </body> </html>