var tape = require("tape"); var protobuf = require(".."); var proto = "message A {\ required uint32 a = 1;\ }\ message B {\ required string b = 1;\ }"; tape.test("reusing", function(test) { var root = protobuf.parse(proto).root; var A = root.lookup("A"), B = root.lookup("B"); test.test(test.name + " - 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(test.name + " - 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(); });