diff --git a/src/core/Utils.js b/src/core/Utils.js index 3794d972..2e4b354b 100755 --- a/src/core/Utils.js +++ b/src/core/Utils.js @@ -212,7 +212,7 @@ const Utils = { * @returns {string} */ printable: function(str, preserveWs) { - if (window && window.app && !window.app.options.treatAsUtf8) { + if (typeof window !== "undefined" && window.app && !window.app.options.treatAsUtf8) { str = Utils.byteArrayToChars(Utils.strToByteArray(str)); } @@ -388,8 +388,9 @@ const Utils = { var wordArray = CryptoJS.enc.Utf8.parse(str), byteArray = Utils.wordArrayToByteArray(wordArray); - if (window && str.length !== wordArray.sigBytes) + if (typeof window !== "undefined" && str.length !== wordArray.sigBytes) { window.app.options.attemptHighlight = false; + } return byteArray; }, @@ -440,7 +441,7 @@ const Utils = { var wordArray = new CryptoJS.lib.WordArray.init(words, byteArray.length), str = CryptoJS.enc.Utf8.stringify(wordArray); - if (window && str.length !== wordArray.sigBytes) + if (typeof window !== "undefined" && str.length !== wordArray.sigBytes) window.app.options.attemptHighlight = false; return str; } catch (err) { diff --git a/src/core/config/OperationConfig.js b/src/core/config/OperationConfig.js index f1fc336f..16f6f1b7 100755 --- a/src/core/config/OperationConfig.js +++ b/src/core/config/OperationConfig.js @@ -455,7 +455,7 @@ const OperationConfig = { ] }, "From Octal": { - description: "Converts a octal byte string back into its raw value.

e.g. 316 223 316 265 316 271 316 254 40 317 203 316 277 317 205 becomes the UTF-8 encoded string Γειά σου", + description: "Converts an octal byte string back into its raw value.

e.g. 316 223 316 265 316 271 316 254 40 317 203 316 277 317 205 becomes the UTF-8 encoded string Γειά σου", run: ByteRepr.runFromOct, highlight: false, highlightReverse: false, diff --git a/src/core/operations/ByteRepr.js b/src/core/operations/ByteRepr.js index c12d9847..950492ac 100755 --- a/src/core/operations/ByteRepr.js +++ b/src/core/operations/ByteRepr.js @@ -56,7 +56,7 @@ const ByteRepr = { /** - * To Oct operation. + * To Octal operation. * * @author Matt C [matt@artemisbot.pw] * @param {byteArray} input @@ -65,11 +65,12 @@ const ByteRepr = { */ runToOct: function(input, args) { var delim = Utils.charRep[args[0] || "Space"]; - return input.map(val => parseInt(Utils.bin(val), 2).toString(8)).join(delim); + return input.map(val => val.toString(8)).join(delim); }, + /** - * From Oct operation. + * From Octal operation. * * @author Matt C [matt@artemisbot.pw] * @param {string} input @@ -82,6 +83,7 @@ const ByteRepr = { return input.split(delim).map(val => parseInt(val, 8)); }, + /** * @constant * @default diff --git a/test/index.js b/test/index.js index fba3e43a..13d82b10 100644 --- a/test/index.js +++ b/test/index.js @@ -12,6 +12,7 @@ import "babel-polyfill"; import TestRegister from "./TestRegister.js"; import "./tests/operations/Base58.js"; +import "./tests/operations/ByteRepr.js"; import "./tests/operations/Compress.js"; import "./tests/operations/FlowControl.js"; import "./tests/operations/MorseCode.js"; diff --git a/test/tests/operations/ByteRepr.js b/test/tests/operations/ByteRepr.js new file mode 100644 index 00000000..533e7a2f --- /dev/null +++ b/test/tests/operations/ByteRepr.js @@ -0,0 +1,77 @@ +/** + * ByteRepr tests. + * + * @author Matt C [matt@artemisbot.pw] + * @copyright Crown Copyright 2017 + * @license Apache-2.0 + */ +import TestRegister from "../../TestRegister.js"; + +TestRegister.addTests([ + { + name: "To Octal: nothing", + input: "", + expectedOutput: "", + recipeConfig: [ + { + "op": "To Octal", + "args": ["Space"] + } + ] + }, + { + name: "From Octal: nothing", + input: "", + expectedOutput: "", + recipeConfig: [ + { + "op": "From Octal", + "args": ["Space"] + } + ] + }, + { + name: "To Octal: hello world", + input: "hello world", // [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100], + expectedOutput: "150 145 154 154 157 40 167 157 162 154 144", + recipeConfig: [ + { + "op": "To Octal", + "args": ["Space"] + } + ] + }, + { + name: "From Octal: hello world", + input: "150 145 154 154 157 40 167 157 162 154 144", + expectedOutput: "hello world", + recipeConfig: [ + { + "op": "From Octal", + "args": ["Space"] + } + ] + }, + { + name: "To Octal: Γειά σου", + input: "Γειά σου", //[206,147,206,181,206,185,206,172,32,207,131,206,191,207,133], + expectedOutput: "316 223 316 265 316 271 316 254 40 317 203 316 277 317 205", + recipeConfig: [ + { + "op": "To Octal", + "args": ["Space"] + } + ] + }, + { + name: "From Octal: Γειά σου", + input: "316 223 316 265 316 271 316 254 40 317 203 316 277 317 205", + expectedOutput: "Γειά σου", + recipeConfig: [ + { + "op": "From Octal", + "args": ["Space"] + } + ] + }, +]); \ No newline at end of file