|  | @@ -1,6 +1,6 @@
 | 
	
		
			
				|  |  |  /*
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  | - * Copyright 2015, Google Inc.
 | 
	
		
			
				|  |  | + * Copyright 2015-2016, Google Inc.
 | 
	
		
			
				|  |  |   * All rights reserved.
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  |   * Redistribution and use in source and binary forms, with or without
 | 
	
	
		
			
				|  | @@ -42,7 +42,7 @@ var ProtoBuf = require('protobufjs');
 | 
	
		
			
				|  |  |  var messages_proto = ProtoBuf.loadProtoFile(
 | 
	
		
			
				|  |  |      __dirname + '/test_messages.proto').build();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -describe('Proto message serialize and deserialize', function() {
 | 
	
		
			
				|  |  | +describe('Proto message long int serialize and deserialize', function() {
 | 
	
		
			
				|  |  |    var longSerialize = common.serializeCls(messages_proto.LongValues);
 | 
	
		
			
				|  |  |    var longDeserialize = common.deserializeCls(messages_proto.LongValues);
 | 
	
		
			
				|  |  |    var pos_value = '314159265358979';
 | 
	
	
		
			
				|  | @@ -87,4 +87,52 @@ describe('Proto message serialize and deserialize', function() {
 | 
	
		
			
				|  |  |      assert.strictEqual(longDeserialize(serialized).sfixed_64.toString(),
 | 
	
		
			
				|  |  |                         neg_value);
 | 
	
		
			
				|  |  |    });
 | 
	
		
			
				|  |  | +  it('should deserialize as a number with the right option set', function() {
 | 
	
		
			
				|  |  | +    var longNumDeserialize = common.deserializeCls(messages_proto.LongValues,
 | 
	
		
			
				|  |  | +                                                   false, false);
 | 
	
		
			
				|  |  | +    var serialized = longSerialize({int_64: pos_value});
 | 
	
		
			
				|  |  | +    assert.strictEqual(typeof longDeserialize(serialized).int_64, 'string');
 | 
	
		
			
				|  |  | +    /* With the longsAsStrings option disabled, long values are represented as
 | 
	
		
			
				|  |  | +     * objects with 3 keys: low, high, and unsigned */
 | 
	
		
			
				|  |  | +    assert.strictEqual(typeof longNumDeserialize(serialized).int_64, 'object');
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  | +describe('Proto message bytes serialize and deserialize', function() {
 | 
	
		
			
				|  |  | +  var sequenceSerialize = common.serializeCls(messages_proto.SequenceValues);
 | 
	
		
			
				|  |  | +  var sequenceDeserialize = common.deserializeCls(
 | 
	
		
			
				|  |  | +      messages_proto.SequenceValues);
 | 
	
		
			
				|  |  | +  var sequenceBase64Deserialize = common.deserializeCls(
 | 
	
		
			
				|  |  | +      messages_proto.SequenceValues, true);
 | 
	
		
			
				|  |  | +  var buffer_val = new Buffer([0x69, 0xb7]);
 | 
	
		
			
				|  |  | +  var base64_val = 'abc=';
 | 
	
		
			
				|  |  | +  it('should preserve a buffer', function() {
 | 
	
		
			
				|  |  | +    var serialized = sequenceSerialize({bytes_field: buffer_val});
 | 
	
		
			
				|  |  | +    var deserialized = sequenceDeserialize(serialized);
 | 
	
		
			
				|  |  | +    assert.strictEqual(deserialized.bytes_field.compare(buffer_val), 0);
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +  it('should accept base64 encoded strings', function() {
 | 
	
		
			
				|  |  | +    var serialized = sequenceSerialize({bytes_field: base64_val});
 | 
	
		
			
				|  |  | +    var deserialized = sequenceDeserialize(serialized);
 | 
	
		
			
				|  |  | +    assert.strictEqual(deserialized.bytes_field.compare(buffer_val), 0);
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +  it('should output base64 encoded strings with an option set', function() {
 | 
	
		
			
				|  |  | +    var serialized = sequenceSerialize({bytes_field: base64_val});
 | 
	
		
			
				|  |  | +    var deserialized = sequenceBase64Deserialize(serialized);
 | 
	
		
			
				|  |  | +    assert.strictEqual(deserialized.bytes_field, base64_val);
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +  /* The next two tests are specific tests to verify that issue
 | 
	
		
			
				|  |  | +   * https://github.com/grpc/grpc/issues/5174 has been fixed. They are skipped
 | 
	
		
			
				|  |  | +   * because they will not pass until a protobuf.js release has been published
 | 
	
		
			
				|  |  | +   * with a fix for https://github.com/dcodeIO/protobuf.js/issues/390 */
 | 
	
		
			
				|  |  | +  it.skip('should serialize a repeated field as packed by default', function() {
 | 
	
		
			
				|  |  | +    var expected_serialize = new Buffer([0x12, 0x01, 0x01, 0x0a]);
 | 
	
		
			
				|  |  | +    var serialized = sequenceSerialize({repeated_field: [10]});
 | 
	
		
			
				|  |  | +    assert.strictEqual(expected_serialize.compare(serialized), 0);
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +  it.skip('should deserialize packed or unpacked repeated', function() {
 | 
	
		
			
				|  |  | +    var serialized = new Buffer([0x12, 0x01, 0x01, 0x0a]);
 | 
	
		
			
				|  |  | +    assert.doesNotThrow(function() {
 | 
	
		
			
				|  |  | +      sequenceDeserialize(serialized);
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  |  });
 |