diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2021-11-20 06:01:42 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2021-11-20 06:19:39 +0000 |
commit | 56eec1de7018759c0ec251dba4455c18f73c3bbd (patch) | |
tree | 3aeb2d10356530bc2cc3f24e74f41048a13885b4 /tests/encode.js | |
parent | Initial commit. (diff) | |
download | zmodemjs-56eec1de7018759c0ec251dba4455c18f73c3bbd.tar.xz zmodemjs-56eec1de7018759c0ec251dba4455c18f73c3bbd.zip |
Adding upstream version 0.1.10+dfsg.upstream/0.1.10+dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/encode.js')
-rwxr-xr-x | tests/encode.js | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/tests/encode.js b/tests/encode.js new file mode 100755 index 0000000..615635f --- /dev/null +++ b/tests/encode.js @@ -0,0 +1,119 @@ +#!/usr/bin/env node + +"use strict"; + +var tape = require('blue-tape'); + +global.Zmodem = require('./lib/zmodem'); + +var enclib = Zmodem.ENCODELIB; + +tape('round-trip: 32-bit little-endian', function(t) { + var times = 1000; + + t.doesNotThrow( + () => { + for (var a=0; a<times; a++) { + var orig = Math.floor( 0xffffffff * Math.random() ); + + var enc = enclib.pack_u32_le(orig); + var roundtrip = enclib.unpack_u32_le(enc); + + if (roundtrip !== orig) { + throw( `Orig: ${orig}, Packed: ` + JSON.stringify(enc) + `, Parsed: ${roundtrip}` ); + } + } + }, + `round-trip 32-bit little-endian: ${times} times` + ); + + t.end(); +} ); + +tape('unpack_u32_le', function(t) { + t.equals( + enclib.unpack_u32_le([222,233,202,254]), + 4274711006, + 'unpack 4-byte number' + ); + + var highest = 0xffffffff; + t.equals( + enclib.unpack_u32_le([255,255,255,255]), + highest, + `highest number possible (${highest})` + ); + + t.equals( + enclib.unpack_u32_le([1, 0, 0, 0]), + 1, + '1' + ); + + t.end(); +}); + +tape('unpack_u16_be', function(t) { + t.equals( + enclib.unpack_u16_be([202,254]), + 51966, + 'unpack 2-byte number' + ); + + var highest = 0xffff; + t.equals( + enclib.unpack_u16_be([255,255]), + highest, + `highest number possible (${highest})` + ); + + t.equals( + enclib.unpack_u16_be([0, 1]), + 1, + '1' + ); + + t.end(); +}); + +tape('octets_to_hex', function(t) { + t.deepEquals( + enclib.octets_to_hex( [ 0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0, 0x0a ] ), + '123456789abcdef00a'.split("").map( (c) => c.charCodeAt(0) ), + 'hex encoding' + ); + + t.end(); +} ); + +tape('parse_hex_octets', function(t) { + t.deepEquals( + enclib.parse_hex_octets( [ 48, 49, 102, 101 ] ), + [ 0x01, 0xfe ], + 'parse hex excoding', + ); + + t.end(); +} ); + +tape('round-trip: 16-bit big-endian', function(t) { + var times = 10000; + + t.doesNotThrow( + () => { + for (var a=0; a<times; a++) { + var orig = Math.floor( 0x10000 * Math.random() ); + + var enc = enclib.pack_u16_be(orig); + var roundtrip = enclib.unpack_u16_be(enc); + + if (roundtrip !== orig) { + throw( `Orig: ${orig}, Packed: ` + JSON.stringify(enc) + `, Parsed: ${roundtrip}` ); + } + } + }, + `round-trip 16-bit big-endian: ${times} times` + ); + + t.end(); +} ); |