Fix for maps_test.js in JavaScript. (#2145)

Had to strip out some JSPB-format test code,
but also added some .proto test messages that
had been improperly stripped out.
This commit is contained in:
Joshua Haberman 2016-09-20 13:56:18 -07:00 committed by Bo Yang
parent e3f0689d05
commit af62fde5e8
2 changed files with 31 additions and 63 deletions

View File

@ -30,10 +30,14 @@
goog.require('goog.testing.asserts');
goog.require('goog.userAgent');
// CommonJS-LoadFromFile: testbinary_pb proto.jspb.test
goog.require('proto.jspb.test.MapValueEnum');
goog.require('proto.jspb.test.MapValueMessage');
goog.require('proto.jspb.test.MapValueMessageNoBinary');
goog.require('proto.jspb.test.TestMapFields');
// CommonJS-LoadFromFile: test_pb proto.jspb.test
goog.require('proto.jspb.test.MapValueMessageNoBinary');
goog.require('proto.jspb.test.TestMapFieldsNoBinary');
/**
@ -258,64 +262,6 @@ function makeTests(msgInfo, submessageCtor, suffix) {
});
}
/**
* Tests serialization and deserialization in JSPB format.
*/
it('testJSPBFormat' + suffix, function() {
var msg = new msgInfo.constructor();
fillMapFields(msg);
var serialized = msg.serialize();
var decoded = msgInfo.deserialize(serialized);
checkMapFields(decoded);
});
/**
* Tests serialization and deserialization in JSPB format, when there is
* a submessage that also contains map entries. This tests recursive
* sync.
*/
it('testJSPBFormatNested' + suffix, function() {
var submsg = new msgInfo.constructor();
var mapValue = new msgInfo.constructor();
var msg = new msgInfo.constructor();
msg.getMapStringTestmapfieldsMap().set('test', mapValue);
msg.setTestMapFields(submsg);
fillMapFields(submsg);
fillMapFields(msg);
fillMapFields(mapValue);
var serialized = msg.serialize();
var decoded = msgInfo.deserialize(serialized);
checkMapFields(decoded);
var decodedSubmsg = decoded.getTestMapFields();
assertNotNull(decodedSubmsg);
checkMapFields(decodedSubmsg);
var decodedMapValue = decoded.getMapStringTestmapfieldsMap().get('test');
assertNotNull(decodedMapValue);
checkMapFields(decodedMapValue);
});
/**
* Tests toObject()/fromObject().
*/
it('testToFromObject' + suffix, function() {
var msg = new msgInfo.constructor();
fillMapFields(msg);
var obj = msg.toObject();
var decoded = msgInfo.fromObject(obj);
checkMapFields(decoded);
obj = msgInfo.deserialize(msg.serialize()).toObject();
decoded = msgInfo.fromObject(obj);
checkMapFields(decoded);
});
/**
* Exercises the lazy map<->underlying array sync.
*/
@ -346,14 +292,10 @@ function makeTests(msgInfo, submessageCtor, suffix) {
describe('mapsTest', function() {
makeTests({
constructor: proto.jspb.test.TestMapFields,
fromObject: proto.jspb.test.TestMapFields.fromObject,
deserialize: proto.jspb.test.TestMapFields.deserialize,
deserializeBinary: proto.jspb.test.TestMapFields.deserializeBinary
}, proto.jspb.test.MapValueMessage, "_Binary");
makeTests({
constructor: proto.jspb.test.TestMapFieldsNoBinary,
fromObject: proto.jspb.test.TestMapFieldsNoBinary.fromObject,
deserialize: proto.jspb.test.TestMapFieldsNoBinary.deserialize,
deserializeBinary: null
}, proto.jspb.test.MapValueMessageNoBinary, "_NoBinary");
});

View File

@ -234,3 +234,29 @@ message TestEndsWithBytes {
optional bytes data = 2;
}
message TestMapFieldsNoBinary {
map<string, string> map_string_string = 1;
map<string, int32> map_string_int32 = 2;
map<string, int64> map_string_int64 = 3;
map<string, bool> map_string_bool = 4;
map<string, double> map_string_double = 5;
map<string, MapValueEnumNoBinary> map_string_enum = 6;
map<string, MapValueMessageNoBinary> map_string_msg = 7;
map<int32, string> map_int32_string = 8;
map<int64, string> map_int64_string = 9;
map<bool, string> map_bool_string = 10;
optional TestMapFieldsNoBinary test_map_fields = 11;
map<string, TestMapFieldsNoBinary> map_string_testmapfields = 12;
}
enum MapValueEnumNoBinary {
MAP_VALUE_FOO_NOBINARY = 0;
MAP_VALUE_BAR_NOBINARY = 1;
MAP_VALUE_BAZ_NOBINARY = 2;
}
message MapValueMessageNoBinary {
optional int32 foo = 1;
}