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