wildfire chat server source initial submit
This commit is contained in:
Executable
+79
@@ -0,0 +1,79 @@
|
||||
var tape = require("tape");
|
||||
|
||||
var protobuf = require("..");
|
||||
|
||||
var protoRequired = "message Test {\
|
||||
required group MyGroup = 1 {\
|
||||
option foo = \"bar\";\
|
||||
required uint32 a = 2;\
|
||||
};\
|
||||
}";
|
||||
|
||||
var protoRepeated = "message Test {\
|
||||
repeated group MyGroup = 1 {\
|
||||
option foo = \"bar\";\
|
||||
required uint32 a = 2;\
|
||||
};\
|
||||
}";
|
||||
|
||||
tape.test("legacy groups", function(test) {
|
||||
var root = protobuf.parse(protoRequired).root;
|
||||
|
||||
var Test = root.resolveAll().lookup("Test");
|
||||
var MyGroupType = Test.get("MyGroup");
|
||||
var MyGroupField = Test.get("myGroup");
|
||||
var msg = {
|
||||
myGroup: {
|
||||
a: 111
|
||||
}
|
||||
};
|
||||
|
||||
test.ok(MyGroupType instanceof protobuf.Type && MyGroupField instanceof protobuf.Field, "should parse to a type and a field");
|
||||
test.equal(MyGroupType.group, true, "should have the group flag set on the type");
|
||||
test.equal(MyGroupField.resolvedType, MyGroupType, "should reference the type from the field");
|
||||
var json = MyGroupType.toJSON();
|
||||
test.equal(json.group, true, "should export group=true to JSON");
|
||||
var MyGroupType2 = protobuf.Type.fromJSON("MyGroup", json);
|
||||
test.equal(MyGroupType2.group, true, "should import group=true from JSON");
|
||||
// NOTE: fromJSON alone does not add the sister-field.
|
||||
// The parser does this explicitly and the field is part of the exported JSON itself.
|
||||
|
||||
test.test(test.name + " - should encode required", (function(Test, msg) { return function(test) {
|
||||
var buf = Test.encode(msg).finish();
|
||||
test.equal(buf.length, 4, "a total of 4 bytes");
|
||||
test.equal(buf[0], 1 << 3 | 3, "id 1, wireType 3");
|
||||
test.equal(buf[1], 2 << 3 | 0, "id 2, wireType 0");
|
||||
test.equal(buf[2], 111, "111");
|
||||
test.equal(buf[3], 1 << 3 | 4, "id 1, wireType 4");
|
||||
test.same(Test.decode(buf), msg, "and decode back the original message");
|
||||
test.end();
|
||||
};})(Test, msg));
|
||||
|
||||
// Same but repeated
|
||||
root = protobuf.parse(protoRepeated).root;
|
||||
Test = root.resolveAll().lookup("Test");
|
||||
msg = {
|
||||
myGroup: [{
|
||||
a: 111
|
||||
},{
|
||||
a: 112
|
||||
}]
|
||||
};
|
||||
|
||||
test.test(test.name + " - should encode repeated", (function(Test, msg) { return function(test) {
|
||||
var buf = Test.encode(msg).finish();
|
||||
test.equal(buf.length, 8, "a total of 8 bytes");
|
||||
test.equal(buf[0], 1 << 3 | 3, "id 1, wireType 3");
|
||||
test.equal(buf[1], 2 << 3 | 0, "id 2, wireType 0");
|
||||
test.equal(buf[2], 111, "111");
|
||||
test.equal(buf[3], 1 << 3 | 4, "id 1, wireType 4");
|
||||
test.equal(buf[4], 1 << 3 | 3, "id 1, wireType 3");
|
||||
test.equal(buf[5], 2 << 3 | 0, "id 2, wireType 0");
|
||||
test.equal(buf[6], 112, "112");
|
||||
test.equal(buf[7], 1 << 3 | 4, "id 1, wireType 4");
|
||||
test.same(Test.decode(buf), msg, "and decode back the original message");
|
||||
test.end();
|
||||
};})(Test, msg));
|
||||
|
||||
test.end();
|
||||
});
|
||||
Reference in New Issue
Block a user