Adding upstream version 0.1.10+dfsg.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
157f539082
commit
4d3e0bf859
42 changed files with 10556 additions and 0 deletions
227
tests/zvalidation.js
Normal file
227
tests/zvalidation.js
Normal file
|
@ -0,0 +1,227 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
"use strict";
|
||||
|
||||
const tape = require('blue-tape');
|
||||
|
||||
global.Zmodem = require('./lib/zmodem');
|
||||
|
||||
const zcrc = Zmodem.CRC;
|
||||
|
||||
var now = new Date();
|
||||
var now_epoch = Math.floor( now.getTime() / 1000 );
|
||||
|
||||
var failures = [
|
||||
[
|
||||
'empty name',
|
||||
{ name: "" },
|
||||
function(t, e) {
|
||||
t.ok( /name/.test(e.message), 'has “name”' );
|
||||
},
|
||||
],
|
||||
[
|
||||
'non-string name',
|
||||
{ name: 123 },
|
||||
function(t, e) {
|
||||
t.ok( /name/.test(e.message), 'has “name”' );
|
||||
t.ok( /string/.test(e.message), 'has “string”' );
|
||||
},
|
||||
],
|
||||
[
|
||||
'non-empty serial',
|
||||
{ name: "123", serial: 0 },
|
||||
function(t, e) {
|
||||
t.ok( /serial/.test(e.message), 'has “serial”' );
|
||||
},
|
||||
],
|
||||
[
|
||||
'files_remaining === 0',
|
||||
{ name: "123", files_remaining: 0 },
|
||||
function(t, e) {
|
||||
t.ok( /files_remaining/.test(e.message), 'has “files_remaining”' );
|
||||
},
|
||||
],
|
||||
[
|
||||
'pre-epoch mtime',
|
||||
{ name: "123", mtime: new Date("1969-12-30T01:02:03Z") },
|
||||
function(t, e) {
|
||||
t.ok( /mtime/.test(e.message), 'has “mtime”' );
|
||||
t.ok( /1969/.test(e.message), 'has “1969”' );
|
||||
t.ok( /1970/.test(e.message), 'has “1970”' );
|
||||
},
|
||||
],
|
||||
];
|
||||
|
||||
["size", "mode", "mtime", "files_remaining", "bytes_remaining"].forEach( (k) => {
|
||||
var input = { name: "the name" };
|
||||
input[k] = "123123";
|
||||
|
||||
var key_regexp = new RegExp(k);
|
||||
var value_regexp = new RegExp(input[k]);
|
||||
|
||||
failures.push( [
|
||||
`string “${k}”`,
|
||||
input,
|
||||
function(t, e) {
|
||||
t.ok( key_regexp.test(e.message), `has “${k}”` );
|
||||
t.ok( value_regexp.test(e.message), 'has value' );
|
||||
t.ok( /number/.test(e.message), 'has “number”' );
|
||||
},
|
||||
] );
|
||||
|
||||
input = Object.assign( {}, input );
|
||||
input[k] = -input[k];
|
||||
|
||||
var negative_regexp = new RegExp(input[k]);
|
||||
|
||||
failures.push( [
|
||||
`negative “${k}”`,
|
||||
input,
|
||||
function(t, e) {
|
||||
t.ok( key_regexp.test(e.message), `has “${k}”` );
|
||||
t.ok( negative_regexp.test(e.message), 'has value' );
|
||||
},
|
||||
] );
|
||||
|
||||
input = Object.assign( {}, input );
|
||||
input[k] = -input[k] - 0.1;
|
||||
|
||||
var fraction_regexp = new RegExp( ("" + input[k]).replace(/\./, "\\.") );
|
||||
|
||||
failures.push( [
|
||||
`fraction “${k}”`,
|
||||
input,
|
||||
function(t, e) {
|
||||
t.ok( key_regexp.test(e.message), `has “${k}”` );
|
||||
t.ok( fraction_regexp.test(e.message), 'has value' );
|
||||
},
|
||||
] );
|
||||
} );
|
||||
|
||||
|
||||
var transformations = [
|
||||
[
|
||||
'name only',
|
||||
{ name: "My name", },
|
||||
{
|
||||
name: "My name",
|
||||
size: null,
|
||||
mtime: null,
|
||||
mode: null,
|
||||
serial: null,
|
||||
files_remaining: null,
|
||||
bytes_remaining: null,
|
||||
},
|
||||
],
|
||||
[
|
||||
'name is all numerals',
|
||||
{ name: "0", },
|
||||
{
|
||||
name: "0",
|
||||
size: null,
|
||||
mtime: null,
|
||||
mode: null,
|
||||
serial: null,
|
||||
files_remaining: null,
|
||||
bytes_remaining: null,
|
||||
},
|
||||
],
|
||||
[
|
||||
'name only (undefined rather than null)',
|
||||
{
|
||||
name: "My name",
|
||||
size: undefined,
|
||||
mtime: undefined,
|
||||
mode: undefined,
|
||||
serial: undefined,
|
||||
files_remaining: undefined,
|
||||
bytes_remaining: undefined,
|
||||
},
|
||||
{
|
||||
name: "My name",
|
||||
size: null,
|
||||
mtime: null,
|
||||
mode: null,
|
||||
serial: null,
|
||||
files_remaining: null,
|
||||
bytes_remaining: null,
|
||||
},
|
||||
],
|
||||
[
|
||||
'name and all numbers',
|
||||
{
|
||||
name: "My name",
|
||||
size: 0,
|
||||
mtime: 0,
|
||||
mode: parseInt("0644", 8),
|
||||
serial: null,
|
||||
files_remaining: 1,
|
||||
bytes_remaining: 0,
|
||||
},
|
||||
{
|
||||
name: "My name",
|
||||
size: 0,
|
||||
mtime: 0,
|
||||
mode: parseInt("100644", 8),
|
||||
serial: null,
|
||||
files_remaining: 1,
|
||||
bytes_remaining: 0,
|
||||
},
|
||||
],
|
||||
[
|
||||
'name, zero size',
|
||||
{ name: "My name", mtime: now },
|
||||
{
|
||||
name: "My name",
|
||||
size: null,
|
||||
mtime: now_epoch,
|
||||
mode: null,
|
||||
serial: null,
|
||||
files_remaining: null,
|
||||
bytes_remaining: null,
|
||||
},
|
||||
],
|
||||
[
|
||||
'name, mtime as Date',
|
||||
{ name: "My name", size: 0 },
|
||||
{
|
||||
name: "My name",
|
||||
size: 0,
|
||||
mtime: null,
|
||||
mode: null,
|
||||
serial: null,
|
||||
files_remaining: null,
|
||||
bytes_remaining: null,
|
||||
},
|
||||
],
|
||||
];
|
||||
|
||||
tape('offer_parameters - failures', function(t) {
|
||||
|
||||
for (const [label, input, todo] of failures) {
|
||||
let err;
|
||||
try {
|
||||
Zmodem.Validation.offer_parameters(input);
|
||||
}
|
||||
catch(e) { err = e }
|
||||
|
||||
t.ok( err instanceof Zmodem.Error, `throws ok: ${label}` );
|
||||
|
||||
todo(t, err);
|
||||
}
|
||||
|
||||
t.end();
|
||||
});
|
||||
|
||||
tape('offer_parameters - happy path', function(t) {
|
||||
|
||||
for (const [label, input, output] of transformations) {
|
||||
t.deepEquals(
|
||||
Zmodem.Validation.offer_parameters(input),
|
||||
output,
|
||||
label,
|
||||
);
|
||||
}
|
||||
|
||||
t.end();
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue