From 4f02dd6a2a937c1bc4d52a2e11ee2198d9959eb3 Mon Sep 17 00:00:00 2001 From: Casper Warden <216465704+casperwardensl@users.noreply.github.com> Date: Wed, 20 Dec 2017 17:35:40 +0000 Subject: [PATCH] Add a binary compare test --- dist/tests/packets.js | 18 +++++++++++++++--- dist/tests/packets.js.map | 2 +- lib/tests/packets.ts | 22 +++++++++++++++++++--- package.json | 2 +- 4 files changed, 36 insertions(+), 8 deletions(-) diff --git a/dist/tests/packets.js b/dist/tests/packets.js index a28eab3..6470c09 100644 --- a/dist/tests/packets.js +++ b/dist/tests/packets.js @@ -82,15 +82,18 @@ describe('Packets', () => { done(); } }); + let buf = Buffer.allocUnsafe(0); + let extra = 0; it('should encode back to binary', (done) => { try { - let buf = Buffer.alloc(packet.getSize()); + buf = Buffer.alloc(packet.getSize()); buf = packet.writeToBuffer(buf, 0, DecodeFlags_1.DecodeFlags.DontChangeFlags); let bl = buf.length; if (packet.packetFlags & PacketFlags_1.PacketFlags.Ack) { - bl += 4 * acksReceived.length; - bl++; + extra += 4 * acksReceived.length; + extra++; } + bl += extra; if (data.length !== bl) { console.log(buf.toString('hex')); console.log(data.toString('hex')); @@ -104,6 +107,15 @@ describe('Packets', () => { done(err); } }); + it('should match the original packet byte-for-byte', (done) => { + const trimmedData = data.slice(0, data.length - extra); + if (trimmedData.compare(buf) !== 0) { + done('Buffers do not match'); + } + else { + done(); + } + }); }); } } diff --git a/dist/tests/packets.js.map b/dist/tests/packets.js.map index a05ebba..fbf8073 100644 --- a/dist/tests/packets.js.map +++ b/dist/tests/packets.js.map @@ -1 +1 @@ -{"version":3,"file":"packets.js","sourceRoot":"","sources":["../../lib/tests/packets.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"packets.js","sourceRoot":"","sources":["../../lib/tests/packets.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/tests/packets.ts b/lib/tests/packets.ts index aee328d..fdb53ab 100644 --- a/lib/tests/packets.ts +++ b/lib/tests/packets.ts @@ -113,20 +113,23 @@ describe('Packets', () => done(); } }); + let buf = Buffer.allocUnsafe(0); + let extra = 0; it('should encode back to binary', (done) => { try { - let buf = Buffer.alloc(packet.getSize()); + buf = Buffer.alloc(packet.getSize()); buf = packet.writeToBuffer(buf, 0, DecodeFlags.DontChangeFlags); // Account for appended acks let bl = buf.length; if (packet.packetFlags & PacketFlags.Ack) { - bl += 4 * acksReceived.length; - bl ++; + extra += 4 * acksReceived.length; + extra++; } + bl += extra; if (data.length !== bl) { @@ -144,6 +147,19 @@ describe('Packets', () => done(err); } }); + it('should match the original packet byte-for-byte', (done) => + { + // First trim off the extra bytes + const trimmedData = data.slice(0, data.length - extra); + if (trimmedData.compare(buf) !== 0) + { + done('Buffers do not match'); + } + else + { + done(); + } + }); }); } } diff --git a/package.json b/package.json index eede427..488e020 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "scripts": { "setup": "npm install", "prepublish": "npm run build", - "test-only": "mocha dist/tests/", + "test-only": "mocha -r source-map-support/register dist/tests/", "pretest": "npm run build", "test": "npm run test-only", "build": "tsc --removeComments",