Skip to content

Commit 78952a5

Browse files
committed
Test case for #531
1 parent 55db92e commit 78952a5

File tree

8 files changed

+69
-7
lines changed

8 files changed

+69
-7
lines changed

dist/protobuf.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/protobuf.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/protobuf.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/protobuf.min.js.gz

4 Bytes
Binary file not shown.

dist/protobuf.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/type.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ TypePrototype.encode = function encode(message, writer) {
341341
* @returns {Writer} writer
342342
*/
343343
TypePrototype.encodeDelimited = function encodeDelimited(message, writer) {
344-
return this.encode(message, writer && writer.fork() || writer).ldelim();
344+
return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim();
345345
};
346346

347347
/**

tests/data/simple.proto

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
syntax = "proto2";
2+
3+
message A {
4+
required uint32 a = 1;
5+
}
6+
7+
message B {
8+
required string b = 1;
9+
}

tests/reuse.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
var tape = require("tape");
2+
3+
var protobuf = require("..");
4+
5+
tape.test("reusing", function(test) {
6+
7+
var root = protobuf.loadSync("tests/data/simple.proto");
8+
9+
var A = root.lookup("A"),
10+
B = root.lookup("B");
11+
12+
test.test("a writer should write", function(test) {
13+
14+
var writer = protobuf.Writer.create();
15+
16+
A.encodeDelimited({
17+
a: 1
18+
}, writer);
19+
20+
B.encodeDelimited({
21+
b: 'a'
22+
}, writer);
23+
24+
var buffer = writer.finish();
25+
26+
test.equal(buffer[0], 2, "length 2");
27+
test.equal(buffer[1], 8, "id 1, wireType 0");
28+
test.equal(buffer[2], 1, "number 1");
29+
test.equal(buffer[3], 3, "length 3");
30+
test.equal(buffer[4], 10, "id 1, wireType 2");
31+
test.equal(buffer[5], 1, "length 1");
32+
test.equal(buffer[6], 97, "string 'a'");
33+
34+
var reader = protobuf.Reader.create(buffer);
35+
36+
test.test("and a reader should", function(test) {
37+
38+
var a = A.decodeDelimited(reader);
39+
test.deepEqual(a, { a: 1 }, "read back the first message");
40+
41+
var b = B.decodeDelimited(reader);
42+
test.deepEqual(b, { b: 'a' }, "read back the second message");
43+
44+
test.equal(reader.pos, reader.len, "consume the reader");
45+
46+
test.end();
47+
});
48+
49+
test.end();
50+
});
51+
52+
test.end();
53+
});

0 commit comments

Comments
 (0)