#!/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(); } );