summaryrefslogtreecommitdiffstats
path: root/tests/zcrc.js
diff options
context:
space:
mode:
Diffstat (limited to 'tests/zcrc.js')
-rwxr-xr-xtests/zcrc.js113
1 files changed, 113 insertions, 0 deletions
diff --git a/tests/zcrc.js b/tests/zcrc.js
new file mode 100755
index 0000000..0698fa4
--- /dev/null
+++ b/tests/zcrc.js
@@ -0,0 +1,113 @@
+#!/usr/bin/env node
+
+"use strict";
+
+var tape = require('blue-tape');
+
+var Zmodem = Object.assign(
+ {},
+ require('../src/zcrc')
+);
+
+var zcrc = Zmodem.CRC;
+
+tape('crc16', function(t) {
+ t.deepEqual(
+ zcrc.crc16( [ 0x0d, 0x0a ] ),
+ [ 0xd7, 0x16 ],
+ 'crc16 - first test'
+ );
+
+ t.deepEqual(
+ zcrc.crc16( [ 0x11, 0x17, 0, 0, 0 ] ),
+ [ 0xe4, 0x81 ],
+ 'crc16 - second test'
+ );
+
+ t.end();
+} );
+
+tape('verify16', function(t) {
+ t.doesNotThrow(
+ () => zcrc.verify16( [ 0x0d, 0x0a ], [ 0xd7, 0x16 ] ),
+ 'verify16 - no throw on good'
+ );
+
+ var err;
+ try { zcrc.verify16( [ 0x0d, 0x0a ], [ 0xd7, 16 ] ) }
+ catch(e) { err = e };
+
+ t.ok(
+ /215,16.*215,22/.test(err.message),
+ 'verify16 - throw on bad (message)'
+ );
+
+ t.ok(
+ err instanceof Zmodem.Error,
+ 'verify16 - typed error'
+ );
+
+ t.ok(
+ err.type,
+ 'verify16 - error type'
+ );
+
+ t.end();
+} );
+
+//----------------------------------------------------------------------
+// The crc32 logic is unused for now, but some misbehaving ZMODEM
+// implementation might send CRC32 regardless of that we don’t
+// advertise it.
+//----------------------------------------------------------------------
+
+tape('crc32', function(t) {
+ const tests = [
+ [ [ 4, 0, 0, 0, 0 ], [ 0xdd, 0x51, 0xa2, 0x33 ] ],
+ [ [ 11, 17, 0, 0, 0 ], [ 0xf6, 0xf6, 0x57, 0x59 ] ],
+ [ [ 3, 0, 0, 0, 0 ], [ 205, 141, 130, 129 ] ],
+ ];
+// } [ 3, 0, 0, 0, 0 ] [ 205, 141, 131, -127 ]
+//2172816845
+//crc32 [ 3, 0, 0, 0, 0 ] -2122150451
+
+ tests.forEach( (cur_t) => {
+ let [ input, output ] = cur_t;
+
+ t.deepEqual(
+ zcrc.crc32(input),
+ output,
+ "crc32: " + input.join(", ")
+ );
+ } );
+
+ t.end();
+} );
+
+tape('verify32', function(t) {
+ t.doesNotThrow(
+ () => zcrc.verify32( [ 4, 0, 0, 0, 0 ], [ 0xdd, 0x51, 0xa2, 0x33 ] ),
+ 'verify32 - no throw on good'
+ );
+
+ var err;
+ try { zcrc.verify32( [ 4, 0, 0, 0, 0 ], [ 1,2,3,4 ] ) }
+ catch(e) { err = e };
+
+ t.ok(
+ /1,2,3,4.*221,81,162,51/.test(err.message),
+ 'verify32 - throw on bad (message)'
+ );
+
+ t.ok(
+ err instanceof Zmodem.Error,
+ 'verify32 - typed error'
+ );
+
+ t.ok(
+ err.type,
+ 'verify32 - error type'
+ );
+
+ t.end();
+} );