protobuf.js/tests/reuse.js
2016-12-09 17:06:56 +01:00

58 lines
1.5 KiB
JavaScript

var tape = require("tape");
var protobuf = require("..");
tape.test("reusing", function(test) {
protobuf.load("tests/data/simple.proto", function(err, root) {
if (err)
return test.fail(err.message);
var A = root.lookup("A"),
B = root.lookup("B");
test.test("a writer should write", function(test) {
var writer = protobuf.Writer.create();
A.encodeDelimited({
a: 1
}, writer);
B.encodeDelimited({
b: 'a'
}, writer);
var buffer = writer.finish();
test.equal(buffer[0], 2, "length 2");
test.equal(buffer[1], 8, "id 1, wireType 0");
test.equal(buffer[2], 1, "number 1");
test.equal(buffer[3], 3, "length 3");
test.equal(buffer[4], 10, "id 1, wireType 2");
test.equal(buffer[5], 1, "length 1");
test.equal(buffer[6], 97, "string 'a'");
var reader = protobuf.Reader.create(buffer);
test.test("and a reader should", function(test) {
var a = A.decodeDelimited(reader);
test.deepEqual(a, { a: 1 }, "read back the first message");
var b = B.decodeDelimited(reader);
test.deepEqual(b, { b: 'a' }, "read back the second message");
test.equal(reader.pos, reader.len, "consume the reader");
test.end();
});
test.end();
});
test.end();
});
});