Add tests for packed encoding/decoding.

This commit is contained in:
Drew Fisher authored and Kenton Varda committed 2016-07-03 21:55:28 -07:00
1 parent 7965ca80f5
commit 22a56c1607
2 files changed
+16

No files matched your search

+16
View File
@@ -25,12 +25,15 @@ var assert = require("assert");
var spawn = require("child_process").spawn;
var goldenBinary;
var goldenPackedBinary;
try {
// Works in Ekam build.
goldenBinary = fs.readFileSync("node-capnp/testdata/binary");
goldenPackedBinary = fs.readFileSync("node-capnp/testdata/packedbinary");
} catch (ex) {
// Works in npm build.
goldenBinary = fs.readFileSync("src/node-capnp/testdata/binary");
goldenPackedBinary = fs.readFileSync("src/node-capnp/testdata/packedbinary");
}
var test = require("./test.capnp");
@@ -53,6 +56,19 @@ assert.equal("foo", test.TestConstants.textConst);
assert.equal("baz", test.TestConstants.structConst.textField);
assert.equal("xyzzy", test.TestConstants.textListConst[1]);
// Test packed serialization/deserialization
var parsedPacked = capnp.parsePacked(test.TestAllTypes, goldenPackedBinary);
var roundTrippedPacked = capnp.serializePacked(test.TestAllTypes, parsedPacked);
assert.equal(goldenPackedBinary.length, roundTrippedPacked.length, "Round trip changed size?");
assert.equal(goldenPackedBinary.toString("base64"), roundTrippedPacked.toString("base64"), "Round trip lost data?");
// TODO(someday): do a more thorough deep equality comparison of parsed and parsedPacked
var keys = ["voidField", "boolField", "int8Field", "int16Field", "int32Field", "int64Field"];
for (var key in keys) {
assert.equal(parsed[key], parsedPacked[key]);
}
// =======================================================================================
/*
Binary file not shown.