63 lines
1.5 KiB
JavaScript
63 lines
1.5 KiB
JavaScript
|
#!/usr/bin/env node
|
||
|
|
||
|
"use strict";
|
||
|
|
||
|
const tape = require('blue-tape');
|
||
|
|
||
|
const testhelp = require('./lib/testhelp');
|
||
|
|
||
|
global.Zmodem = require('./lib/zmodem');
|
||
|
|
||
|
var zdle = new Zmodem.ZDLE( { escape_ctrl_chars: true } );
|
||
|
|
||
|
tape('build, encode, parse', function(t) {
|
||
|
let content = [1, 2, 3, 4];
|
||
|
|
||
|
["end_ack", "no_end_ack", "end_no_ack", "no_end_no_ack"].forEach( end => {
|
||
|
var header = Zmodem.Subpacket.build( content, end );
|
||
|
|
||
|
t.deepEquals(
|
||
|
header.get_payload(),
|
||
|
content,
|
||
|
`${end}: get_payload()`
|
||
|
);
|
||
|
|
||
|
t.is(
|
||
|
header.frame_end(),
|
||
|
!/no_end/.test(end),
|
||
|
`${end}: frame_end()`
|
||
|
);
|
||
|
|
||
|
t.is(
|
||
|
header.ack_expected(),
|
||
|
!/no_ack/.test(end),
|
||
|
`${end}: ack_expected()`
|
||
|
);
|
||
|
|
||
|
[16, 32].forEach( crclen => {
|
||
|
var encoded = header["encode" + crclen](zdle);
|
||
|
var parsed = Zmodem.Subpacket["parse" + crclen](encoded);
|
||
|
|
||
|
t.deepEquals(
|
||
|
parsed.get_payload(),
|
||
|
content,
|
||
|
`${end}, CRC${crclen} rount-trip: get_payload()`
|
||
|
);
|
||
|
|
||
|
t.is(
|
||
|
parsed.frame_end(),
|
||
|
header.frame_end(),
|
||
|
`${end}, CRC${crclen} rount-trip: frame_end()`
|
||
|
);
|
||
|
|
||
|
t.is(
|
||
|
parsed.ack_expected(),
|
||
|
header.ack_expected(),
|
||
|
`${end}, CRC${crclen} rount-trip: ack_expected()`
|
||
|
);
|
||
|
} );
|
||
|
} );
|
||
|
|
||
|
t.end();
|
||
|
} );
|