Validate To Binary byte length
This commit is contained in:
parent
72ca1aeec7
commit
59551fcbc1
@ -9,6 +9,7 @@
|
|||||||
import Utils from "../Utils.mjs";
|
import Utils from "../Utils.mjs";
|
||||||
import OperationError from "../errors/OperationError.mjs";
|
import OperationError from "../errors/OperationError.mjs";
|
||||||
|
|
||||||
|
export const MAX_BINARY_PADDING = 65536;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert a byte array into a binary string.
|
* Convert a byte array into a binary string.
|
||||||
@ -32,6 +33,10 @@ export function toBinary(data, delim="Space", padding=8) {
|
|||||||
if (data === undefined || data === null)
|
if (data === undefined || data === null)
|
||||||
throw new OperationError("Unable to convert to binary: Empty input data enocuntered");
|
throw new OperationError("Unable to convert to binary: Empty input data enocuntered");
|
||||||
|
|
||||||
|
padding = Number(padding);
|
||||||
|
if (!Number.isFinite(padding) || padding < 0 || Math.round(padding) !== padding || padding > MAX_BINARY_PADDING)
|
||||||
|
throw new OperationError(`Byte length must be an integer between 0 and ${MAX_BINARY_PADDING}`);
|
||||||
|
|
||||||
delim = Utils.charRep(delim);
|
delim = Utils.charRep(delim);
|
||||||
let output = "";
|
let output = "";
|
||||||
|
|
||||||
@ -77,4 +82,3 @@ export function fromBinary(data, delim="Space", byteLen=8) {
|
|||||||
}
|
}
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
import Operation from "../Operation.mjs";
|
import Operation from "../Operation.mjs";
|
||||||
import Utils from "../Utils.mjs";
|
import Utils from "../Utils.mjs";
|
||||||
import {BIN_DELIM_OPTIONS} from "../lib/Delim.mjs";
|
import {BIN_DELIM_OPTIONS} from "../lib/Delim.mjs";
|
||||||
import {toBinary} from "../lib/Binary.mjs";
|
import {MAX_BINARY_PADDING, toBinary} from "../lib/Binary.mjs";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* To Binary operation
|
* To Binary operation
|
||||||
@ -35,6 +35,8 @@ class ToBinary extends Operation {
|
|||||||
{
|
{
|
||||||
"name": "Byte Length",
|
"name": "Byte Length",
|
||||||
"type": "number",
|
"type": "number",
|
||||||
|
"min": 1,
|
||||||
|
"max": MAX_BINARY_PADDING,
|
||||||
"value": 8
|
"value": 8
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|||||||
@ -178,6 +178,7 @@ import "./tests/TakeNthBytes.mjs";
|
|||||||
import "./tests/Template.mjs";
|
import "./tests/Template.mjs";
|
||||||
import "./tests/TextEncodingBruteForce.mjs";
|
import "./tests/TextEncodingBruteForce.mjs";
|
||||||
import "./tests/TextIntegerConverter.mjs";
|
import "./tests/TextIntegerConverter.mjs";
|
||||||
|
import "./tests/ToBinary.mjs";
|
||||||
import "./tests/ToFromInsensitiveRegex.mjs";
|
import "./tests/ToFromInsensitiveRegex.mjs";
|
||||||
import "./tests/TranslateDateTimeFormat.mjs";
|
import "./tests/TranslateDateTimeFormat.mjs";
|
||||||
import "./tests/Typex.mjs";
|
import "./tests/Typex.mjs";
|
||||||
|
|||||||
33
tests/operations/tests/ToBinary.mjs
Normal file
33
tests/operations/tests/ToBinary.mjs
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/**
|
||||||
|
* To Binary tests
|
||||||
|
*
|
||||||
|
* @author n1474335 [n1474335@gmail.com]
|
||||||
|
* @copyright Crown Copyright 2026
|
||||||
|
* @license Apache-2.0
|
||||||
|
*/
|
||||||
|
import TestRegister from "../../lib/TestRegister.mjs";
|
||||||
|
|
||||||
|
TestRegister.addTests([
|
||||||
|
{
|
||||||
|
name: "To Binary: custom byte length",
|
||||||
|
input: "hello",
|
||||||
|
expectedOutput: "01101000 01100101 01101100 01101100 01101111",
|
||||||
|
recipeConfig: [
|
||||||
|
{
|
||||||
|
"op": "To Binary",
|
||||||
|
"args": ["Space", 8]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "To Binary: byte length too large",
|
||||||
|
input: "hello",
|
||||||
|
expectedOutput: "Byte length must be an integer between 0 and 65536",
|
||||||
|
recipeConfig: [
|
||||||
|
{
|
||||||
|
"op": "To Binary",
|
||||||
|
"args": ["Space", "8111111111111111111"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]);
|
||||||
Loading…
x
Reference in New Issue
Block a user