mirror of
https://github.com/protobufjs/protobuf.js.git
synced 2025-12-08 20:58:55 +00:00
108 lines
3.7 KiB
JavaScript
108 lines
3.7 KiB
JavaScript
/* var tape = require("tape");
|
|
|
|
var protobuf = require("../debug");
|
|
|
|
tape.test("google.protobuf.Any type", function(test) {
|
|
protobuf.debug.enable();
|
|
protobuf.load("tests/data/common.proto", function(err, root) {
|
|
if (err)
|
|
return test.fail(err.message);
|
|
|
|
var google_protobuf = root.resolveAll().lookup("google.protobuf");
|
|
test.ok(google_protobuf.Any, "should expose Any as a property on the reflected google.protobuf namespace");
|
|
|
|
var Any = root.lookup("google.protobuf.Any");
|
|
|
|
test.ok(Any instanceof protobuf.Type, "should extend Type");
|
|
|
|
var valueBuffer = protobuf.util.newBuffer(1);
|
|
valueBuffer[0] = 0;
|
|
var any = Any.create({
|
|
type_url: "some.type",
|
|
value: valueBuffer
|
|
});
|
|
|
|
test.test(test.name + " - instances", function(test) {
|
|
|
|
test.ok(any instanceof protobuf.Message, "should extend Message");
|
|
test.deepEqual(any, {
|
|
type_url: "some.type",
|
|
value: valueBuffer
|
|
}, "should be populated with the contents we provided");
|
|
|
|
var writer = Any.encode(any),
|
|
buf;
|
|
|
|
function verifyEncode(test, buf) {
|
|
test.equal(buf[0] , 1 << 3 | 2, "a tag with id 1, wire type 2");
|
|
test.equal(buf[1] , 9 , "a field length of 9");
|
|
test.equal(buf[11] , 2 << 3 | 2, "a tag with id 2, wire type 2");
|
|
test.equal(buf[12] , 1 , "a field length of 1");
|
|
test.equal(buf.length, 14 , "14 bytes in total");
|
|
}
|
|
|
|
test.test(test.name + " - should encode", function(test) {
|
|
|
|
writer = Any.encode(any);
|
|
buf = writer.finish();
|
|
|
|
verifyEncode(test, buf);
|
|
|
|
test.end();
|
|
});
|
|
|
|
test.test(test.name + " - should decode", function(test) {
|
|
|
|
var msg = Any.decode(buf);
|
|
|
|
test.deepEqual(msg, any, "an equal message");
|
|
|
|
test.end();
|
|
});
|
|
|
|
test.test(test.name + " - should encodeDelimited", function(test) {
|
|
|
|
writer = Any.encodeDelimited(any);
|
|
buf = writer.finish();
|
|
|
|
test.equal(buf[0] , 14 , "a length of 14");
|
|
test.equal(buf[1] , 1 << 3 | 2, "a tag with id 1, wire type 2");
|
|
test.equal(buf[2] , 9 , "a field length of 9");
|
|
test.equal(buf[12] , 2 << 3 | 2, "a tag with id 2, wire type 2");
|
|
test.equal(buf[13] , 1 , "a field length of 1");
|
|
test.equal(buf.length, 15 , "15 bytes in total");
|
|
|
|
test.end();
|
|
});
|
|
|
|
test.test(test.name + " - should decodeDelimited", function(test) {
|
|
|
|
var msg = Any.decodeDelimited(buf);
|
|
test.deepEqual(msg, any, "an equal message");
|
|
|
|
test.end();
|
|
});
|
|
|
|
test.test(test.name + " - debug", function(test) {
|
|
var unused = protobuf.debug.unusedTypes(root).map(function(type) { return type.fullName; });
|
|
test.same(unused, [
|
|
".Something",
|
|
".google.protobuf.Duration",
|
|
".google.protobuf.Empty",
|
|
".google.protobuf.Struct",
|
|
".google.protobuf.Value",
|
|
".google.protobuf.ListValue",
|
|
".google.protobuf.Timestamp"
|
|
], "should recognize unused types (all but .google.protobuf.Any)");
|
|
|
|
protobuf.debug.disable();
|
|
test.end();
|
|
});
|
|
|
|
test.end();
|
|
});
|
|
|
|
test.end();
|
|
|
|
});
|
|
}); */ |