| Index: third_party/protobuf/js/proto3_test.js
|
| diff --git a/third_party/protobuf/js/proto3_test.js b/third_party/protobuf/js/proto3_test.js
|
| index 4dd7790f16b9427128f62bf5c04325ce0e5378f4..81d6de2f5eeec162df8a7bd847ad42b0b7666ee5 100644
|
| --- a/third_party/protobuf/js/proto3_test.js
|
| +++ b/third_party/protobuf/js/proto3_test.js
|
| @@ -38,6 +38,12 @@ goog.require('proto.jspb.test.ForeignMessage');
|
| goog.require('proto.jspb.test.Proto3Enum');
|
| goog.require('proto.jspb.test.TestProto3');
|
|
|
| +// CommonJS-LoadFromFile: google/protobuf/timestamp_pb proto.google.protobuf
|
| +goog.require('proto.google.protobuf.Timestamp');
|
| +
|
| +// CommonJS-LoadFromFile: google/protobuf/struct_pb proto.google.protobuf
|
| +goog.require('proto.google.protobuf.Struct');
|
| +
|
|
|
| var BYTES = new Uint8Array([1, 2, 8, 9]);
|
| var BYTES_B64 = goog.crypt.base64.encodeByteArray(BYTES);
|
| @@ -221,37 +227,52 @@ describe('proto3Test', function() {
|
| it('testOneofs', function() {
|
| var msg = new proto.jspb.test.TestProto3();
|
|
|
| - assertEquals(msg.getOneofUint32(), undefined);
|
| + assertEquals(msg.getOneofUint32(), 0);
|
| assertEquals(msg.getOneofForeignMessage(), undefined);
|
| - assertEquals(msg.getOneofString(), undefined);
|
| - assertEquals(msg.getOneofBytes(), undefined);
|
| + assertEquals(msg.getOneofString(), '');
|
| + assertEquals(msg.getOneofBytes(), '');
|
| + assertFalse(msg.hasOneofUint32());
|
| + assertFalse(msg.hasOneofString());
|
| + assertFalse(msg.hasOneofBytes());
|
|
|
| msg.setOneofUint32(42);
|
| assertEquals(msg.getOneofUint32(), 42);
|
| assertEquals(msg.getOneofForeignMessage(), undefined);
|
| - assertEquals(msg.getOneofString(), undefined);
|
| - assertEquals(msg.getOneofBytes(), undefined);
|
| + assertEquals(msg.getOneofString(), '');
|
| + assertEquals(msg.getOneofBytes(), '');
|
| + assertTrue(msg.hasOneofUint32());
|
| + assertFalse(msg.hasOneofString());
|
| + assertFalse(msg.hasOneofBytes());
|
|
|
|
|
| var submsg = new proto.jspb.test.ForeignMessage();
|
| msg.setOneofForeignMessage(submsg);
|
| - assertEquals(msg.getOneofUint32(), undefined);
|
| + assertEquals(msg.getOneofUint32(), 0);
|
| assertEquals(msg.getOneofForeignMessage(), submsg);
|
| - assertEquals(msg.getOneofString(), undefined);
|
| - assertEquals(msg.getOneofBytes(), undefined);
|
| + assertEquals(msg.getOneofString(), '');
|
| + assertEquals(msg.getOneofBytes(), '');
|
| + assertFalse(msg.hasOneofUint32());
|
| + assertFalse(msg.hasOneofString());
|
| + assertFalse(msg.hasOneofBytes());
|
|
|
| msg.setOneofString('hello');
|
| - assertEquals(msg.getOneofUint32(), undefined);
|
| + assertEquals(msg.getOneofUint32(), 0);
|
| assertEquals(msg.getOneofForeignMessage(), undefined);
|
| assertEquals(msg.getOneofString(), 'hello');
|
| - assertEquals(msg.getOneofBytes(), undefined);
|
| + assertEquals(msg.getOneofBytes(), '');
|
| + assertFalse(msg.hasOneofUint32());
|
| + assertTrue(msg.hasOneofString());
|
| + assertFalse(msg.hasOneofBytes());
|
|
|
| msg.setOneofBytes(goog.crypt.base64.encodeString('\u00FF\u00FF'));
|
| - assertEquals(msg.getOneofUint32(), undefined);
|
| + assertEquals(msg.getOneofUint32(), 0);
|
| assertEquals(msg.getOneofForeignMessage(), undefined);
|
| - assertEquals(msg.getOneofString(), undefined);
|
| + assertEquals(msg.getOneofString(), '');
|
| assertEquals(msg.getOneofBytes_asB64(),
|
| goog.crypt.base64.encodeString('\u00FF\u00FF'));
|
| + assertFalse(msg.hasOneofUint32());
|
| + assertFalse(msg.hasOneofString());
|
| + assertTrue(msg.hasOneofBytes());
|
| });
|
|
|
|
|
| @@ -279,7 +300,7 @@ describe('proto3Test', function() {
|
| msg.setOptionalForeignEnum(proto.jspb.test.Proto3Enum.PROTO3_BAR);
|
| msg.setOptionalForeignEnum(proto.jspb.test.Proto3Enum.PROTO3_FOO);
|
| msg.setOneofUint32(32);
|
| - msg.setOneofUint32(null);
|
| + msg.clearOneofUint32();
|
|
|
|
|
| var serialized = msg.serializeBinary();
|
| @@ -311,4 +332,36 @@ describe('proto3Test', function() {
|
| assertTrue(bytesCompare(msg.getOptionalBytes(), BYTES));
|
|
|
| });
|
| +
|
| + it('testTimestampWellKnownType', function() {
|
| + var msg = new proto.google.protobuf.Timestamp();
|
| + msg.fromDate(new Date(123456789));
|
| + assertEquals(123456, msg.getSeconds());
|
| + assertEquals(789000000, msg.getNanos());
|
| + var date = msg.toDate();
|
| + assertEquals(123456789, date.getTime());
|
| + });
|
| +
|
| + it('testStructWellKnownType', function() {
|
| + var jsObj = {
|
| + abc: "def",
|
| + number: 12345.678,
|
| + nullKey: null,
|
| + boolKey: true,
|
| + listKey: [1, null, true, false, "abc"],
|
| + structKey: {foo: "bar", somenum: 123},
|
| + complicatedKey: [{xyz: {abc: [3, 4, null, false]}}, "zzz"]
|
| + };
|
| +
|
| + var struct = proto.google.protobuf.Struct.fromJavaScript(jsObj);
|
| + var jsObj2 = struct.toJavaScript();
|
| +
|
| + assertEquals("def", jsObj2.abc);
|
| + assertEquals(12345.678, jsObj2.number);
|
| + assertEquals(null, jsObj2.nullKey);
|
| + assertEquals(true, jsObj2.boolKey);
|
| + assertEquals("abc", jsObj2.listKey[4]);
|
| + assertEquals("bar", jsObj2.structKey.foo);
|
| + assertEquals(4, jsObj2.complicatedKey[0].xyz.abc[1]);
|
| + });
|
| });
|
|
|