Browse Source

Merge branch 'master' into feature-extract-files

n1474335 6 years ago
parent
commit
fd07b89028
71 changed files with 1107 additions and 154 deletions
  1. 1 1
      .editorconfig
  2. 9 0
      .eslintrc.json
  3. 1 0
      .gitignore
  4. 3 0
      .travis.yml
  5. 5 0
      CHANGELOG.md
  6. 22 19
      Gruntfile.js
  7. 34 0
      nightwatch.json
  8. 726 14
      package-lock.json
  9. 5 1
      package.json
  10. 1 1
      src/core/config/scripts/newOperation.mjs
  11. 182 0
      tests/browser/nightwatch.js
  12. 1 1
      tests/operations/TestRegister.mjs
  13. 59 59
      tests/operations/index.mjs
  14. 1 1
      tests/operations/tests/BCD.mjs
  15. 1 1
      tests/operations/tests/BSON.mjs
  16. 1 1
      tests/operations/tests/Base58.mjs
  17. 1 1
      tests/operations/tests/Base62.mjs
  18. 1 1
      tests/operations/tests/Base64.mjs
  19. 1 1
      tests/operations/tests/BitwiseOp.mjs
  20. 1 1
      tests/operations/tests/ByteRepr.mjs
  21. 1 1
      tests/operations/tests/CSV.mjs
  22. 1 1
      tests/operations/tests/CartesianProduct.mjs
  23. 1 1
      tests/operations/tests/CharEnc.mjs
  24. 1 1
      tests/operations/tests/Checksum.mjs
  25. 1 1
      tests/operations/tests/Ciphers.mjs
  26. 1 1
      tests/operations/tests/Code.mjs
  27. 1 1
      tests/operations/tests/Comment.mjs
  28. 1 1
      tests/operations/tests/Compress.mjs
  29. 1 1
      tests/operations/tests/ConditionalJump.mjs
  30. 1 1
      tests/operations/tests/Crypt.mjs
  31. 1 1
      tests/operations/tests/DateTime.mjs
  32. 1 1
      tests/operations/tests/ExtractEmailAddresses.mjs
  33. 1 1
      tests/operations/tests/Fork.mjs
  34. 1 1
      tests/operations/tests/FromDecimal.mjs
  35. 1 1
      tests/operations/tests/FromGeohash.mjs
  36. 1 1
      tests/operations/tests/Hash.mjs
  37. 1 1
      tests/operations/tests/HaversineDistance.mjs
  38. 1 1
      tests/operations/tests/Hexdump.mjs
  39. 1 1
      tests/operations/tests/Image.mjs
  40. 1 1
      tests/operations/tests/JSONBeautify.mjs
  41. 1 1
      tests/operations/tests/JSONMinify.mjs
  42. 1 1
      tests/operations/tests/JWTDecode.mjs
  43. 1 1
      tests/operations/tests/JWTSign.mjs
  44. 1 1
      tests/operations/tests/JWTVerify.mjs
  45. 1 1
      tests/operations/tests/Jump.mjs
  46. 1 1
      tests/operations/tests/MS.mjs
  47. 1 1
      tests/operations/tests/Magic.mjs
  48. 1 1
      tests/operations/tests/Media.mjs
  49. 1 1
      tests/operations/tests/MorseCode.mjs
  50. 1 1
      tests/operations/tests/NetBIOS.mjs
  51. 1 1
      tests/operations/tests/OTP.mjs
  52. 1 1
      tests/operations/tests/PGP.mjs
  53. 1 1
      tests/operations/tests/PHP.mjs
  54. 1 1
      tests/operations/tests/ParseIPRange.mjs
  55. 1 1
      tests/operations/tests/ParseQRCode.mjs
  56. 1 1
      tests/operations/tests/ParseTLV.mjs
  57. 1 1
      tests/operations/tests/PowerSet.mjs
  58. 1 1
      tests/operations/tests/Regex.mjs
  59. 1 1
      tests/operations/tests/Register.mjs
  60. 1 1
      tests/operations/tests/RemoveDiacritics.mjs
  61. 1 1
      tests/operations/tests/Rotate.mjs
  62. 1 1
      tests/operations/tests/SeqUtils.mjs
  63. 1 1
      tests/operations/tests/SetDifference.mjs
  64. 1 1
      tests/operations/tests/SetIntersection.mjs
  65. 1 1
      tests/operations/tests/SetUnion.mjs
  66. 1 1
      tests/operations/tests/SplitColourChannels.mjs
  67. 1 1
      tests/operations/tests/StrUtils.mjs
  68. 1 1
      tests/operations/tests/SymmetricDifference.mjs
  69. 1 1
      tests/operations/tests/TextEncodingBruteForce.mjs
  70. 1 1
      tests/operations/tests/ToGeohash.mjs
  71. 1 1
      tests/operations/tests/TranslateDateTimeFormat.mjs

+ 1 - 1
.editorconfig

@@ -9,6 +9,6 @@ trim_trailing_whitespace = true
 indent_style = space
 indent_style = space
 indent_size = 4
 indent_size = 4
 
 
-[{package.json,.travis.yml}]
+[{package.json,.travis.yml,nightwatch.json}]
 indent_style = space
 indent_style = space
 indent_size = 2
 indent_size = 2

+ 9 - 0
.eslintrc.json

@@ -87,6 +87,15 @@
         "no-var": "error",
         "no-var": "error",
         "prefer-const": "error"
         "prefer-const": "error"
     },
     },
+    "overrides": [
+        {
+            "files": "tests/**/*",
+            "rules": {
+                "no-unused-expressions": "off",
+                "no-console": "off"
+            }
+        }
+    ],
     "globals": {
     "globals": {
         "$": false,
         "$": false,
         "jQuery": false,
         "jQuery": false,

+ 1 - 0
.gitignore

@@ -9,4 +9,5 @@ docs/*
 src/core/config/modules/*
 src/core/config/modules/*
 src/core/config/OperationConfig.json
 src/core/config/OperationConfig.json
 src/core/operations/index.mjs
 src/core/operations/index.mjs
+tests/browser/output/*
 
 

+ 3 - 0
.travis.yml

@@ -1,6 +1,8 @@
 language: node_js
 language: node_js
 node_js:
 node_js:
   - node
   - node
+addons:
+  chrome: stable
 install: npm install
 install: npm install
 before_script:
 before_script:
   - npm install -g grunt
   - npm install -g grunt
@@ -10,6 +12,7 @@ script:
   - grunt docs
   - grunt docs
   - grunt node
   - grunt node
   - grunt prod --msg="$COMPILE_MSG"
   - grunt prod --msg="$COMPILE_MSG"
+  - xvfb-run --server-args="-screen 0 1200x800x24" grunt testui
 before_deploy:
 before_deploy:
   - grunt exec:sitemap
   - grunt exec:sitemap
   - grunt copy:ghPages
   - grunt copy:ghPages

+ 5 - 0
CHANGELOG.md

@@ -2,6 +2,9 @@
 All major and minor version changes will be documented in this file. Details of patch-level version changes can be found in [commit messages](https://github.com/gchq/CyberChef/commits/master).
 All major and minor version changes will be documented in this file. Details of patch-level version changes can be found in [commit messages](https://github.com/gchq/CyberChef/commits/master).
 
 
 
 
+### [8.19.0] - 2018-12-30
+- UI test suite added to confirm that the app loads correctly in a reasonable time and that various operations from each module can be run [@n1474335] | [#458]
+
 ### [8.18.0] - 2018-12-26
 ### [8.18.0] - 2018-12-26
 - 'Split Colour Channels' operation added [@artemisbot] | [#449]
 - 'Split Colour Channels' operation added [@artemisbot] | [#449]
 
 
@@ -85,6 +88,7 @@ All major and minor version changes will be documented in this file. Details of
 
 
 
 
 
 
+[8.19.0]: https://github.com/gchq/CyberChef/releases/tag/v8.19.0
 [8.18.0]: https://github.com/gchq/CyberChef/releases/tag/v8.18.0
 [8.18.0]: https://github.com/gchq/CyberChef/releases/tag/v8.18.0
 [8.17.0]: https://github.com/gchq/CyberChef/releases/tag/v8.17.0
 [8.17.0]: https://github.com/gchq/CyberChef/releases/tag/v8.17.0
 [8.16.0]: https://github.com/gchq/CyberChef/releases/tag/v8.16.0
 [8.16.0]: https://github.com/gchq/CyberChef/releases/tag/v8.16.0
@@ -155,3 +159,4 @@ All major and minor version changes will be documented in this file. Details of
 [#446]: https://github.com/gchq/CyberChef/pull/446
 [#446]: https://github.com/gchq/CyberChef/pull/446
 [#448]: https://github.com/gchq/CyberChef/pull/448
 [#448]: https://github.com/gchq/CyberChef/pull/448
 [#449]: https://github.com/gchq/CyberChef/pull/449
 [#449]: https://github.com/gchq/CyberChef/pull/449
+[#458]: https://github.com/gchq/CyberChef/pull/458

+ 22 - 19
Gruntfile.js

@@ -30,8 +30,12 @@ module.exports = function (grunt) {
         ["clean:node", "clean:config", "exec:generateConfig", "webpack:node", "chmod:build"]);
         ["clean:node", "clean:config", "exec:generateConfig", "webpack:node", "chmod:build"]);
 
 
     grunt.registerTask("test",
     grunt.registerTask("test",
-        "A task which runs all the tests in test/tests.",
-        ["exec:generateConfig", "exec:tests"]);
+        "A task which runs all the operation tests in the tests directory.",
+        ["exec:generateConfig", "exec:opTests"]);
+
+    grunt.registerTask("testui",
+        "A task which runs all the UI tests in the tests directory. The prod task must already have been run.",
+        ["connect:prod", "exec:browserTests"]);
 
 
     grunt.registerTask("docs",
     grunt.registerTask("docs",
         "Compiles documentation in the /docs directory.",
         "Compiles documentation in the /docs directory.",
@@ -67,6 +71,7 @@ module.exports = function (grunt) {
     grunt.loadNpmTasks("grunt-exec");
     grunt.loadNpmTasks("grunt-exec");
     grunt.loadNpmTasks("grunt-accessibility");
     grunt.loadNpmTasks("grunt-accessibility");
     grunt.loadNpmTasks("grunt-concurrent");
     grunt.loadNpmTasks("grunt-concurrent");
+    grunt.loadNpmTasks("grunt-contrib-connect");
 
 
 
 
     // Project configuration
     // Project configuration
@@ -144,11 +149,11 @@ module.exports = function (grunt) {
             options: {
             options: {
                 configFile: "./.eslintrc.json"
                 configFile: "./.eslintrc.json"
             },
             },
-            configs: ["*.js"],
+            configs: ["*.{js,mjs}"],
             core: ["src/core/**/*.{js,mjs}", "!src/core/vendor/**/*", "!src/core/operations/legacy/**/*"],
             core: ["src/core/**/*.{js,mjs}", "!src/core/vendor/**/*", "!src/core/operations/legacy/**/*"],
             web: ["src/web/**/*.{js,mjs}"],
             web: ["src/web/**/*.{js,mjs}"],
             node: ["src/node/**/*.{js,mjs}"],
             node: ["src/node/**/*.{js,mjs}"],
-            tests: ["test/**/*.{js,mjs}"],
+            tests: ["tests/**/*.{js,mjs}"],
         },
         },
         jsdoc: {
         jsdoc: {
             options: {
             options: {
@@ -246,19 +251,6 @@ module.exports = function (grunt) {
                     }),
                     }),
                 ]
                 ]
             },
             },
-            tests: {
-                mode: "development",
-                target: "node",
-                entry: "./test/index.mjs",
-                externals: [NodeExternals()],
-                output: {
-                    filename: "index.js",
-                    path: __dirname + "/build/test"
-                },
-                plugins: [
-                    new webpack.DefinePlugin(BUILD_CONSTANTS)
-                ]
-            },
             node: {
             node: {
                 mode: "production",
                 mode: "production",
                 target: "node",
                 target: "node",
@@ -320,6 +312,14 @@ module.exports = function (grunt) {
                 }
                 }
             }
             }
         },
         },
+        connect: {
+            prod: {
+                options: {
+                    port: 8000,
+                    base: "build/prod/"
+                }
+            }
+        },
         copy: {
         copy: {
             ghPages: {
             ghPages: {
                 options: {
                 options: {
@@ -399,8 +399,11 @@ module.exports = function (grunt) {
                     "echo '--- Config scripts finished. ---\n'"
                     "echo '--- Config scripts finished. ---\n'"
                 ].join(";")
                 ].join(";")
             },
             },
-            tests: {
-                command: "node --experimental-modules --no-warnings --no-deprecation test/index.mjs"
+            opTests: {
+                command: "node --experimental-modules --no-warnings --no-deprecation tests/operations/index.mjs"
+            },
+            browserTests: {
+                command: "./node_modules/.bin/nightwatch --env prod,inline"
             }
             }
         },
         },
     });
     });

+ 34 - 0
nightwatch.json

@@ -0,0 +1,34 @@
+{
+  "src_folders": ["tests/browser"],
+  "output_folder": "tests/browser/output",
+
+  "test_settings": {
+
+    "default": {
+      "launch_url": "http://localhost:8080",
+      "webdriver": {
+        "start_process": true,
+        "server_path": "./node_modules/.bin/chromedriver",
+        "port": 9515,
+        "log_path": false
+      },
+      "desiredCapabilities": {
+        "browserName": "chrome"
+      }
+    },
+
+    "dev": {
+      "launch_url": "http://localhost:8080"
+    },
+
+    "prod": {
+      "launch_url": "http://localhost:8000/index.html"
+    },
+
+    "inline": {
+      "launch_url": "http://localhost:8000/cyberchef.htm"
+    }
+
+  }
+}
+

File diff suppressed because it is too large
+ 726 - 14
package-lock.json


+ 5 - 1
package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "cyberchef",
   "name": "cyberchef",
-  "version": "8.18.1",
+  "version": "8.19.0",
   "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.",
   "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.",
   "author": "n1474335 <n1474335@gmail.com>",
   "author": "n1474335 <n1474335@gmail.com>",
   "homepage": "https://gchq.github.io/CyberChef",
   "homepage": "https://gchq.github.io/CyberChef",
@@ -35,6 +35,7 @@
     "autoprefixer": "^9.3.1",
     "autoprefixer": "^9.3.1",
     "babel-loader": "^8.0.4",
     "babel-loader": "^8.0.4",
     "bootstrap": "^4.1.3",
     "bootstrap": "^4.1.3",
+    "chromedriver": "^2.45.0",
     "colors": "^1.3.2",
     "colors": "^1.3.2",
     "css-loader": "^1.0.1",
     "css-loader": "^1.0.1",
     "eslint": "^5.8.0",
     "eslint": "^5.8.0",
@@ -46,6 +47,7 @@
     "grunt-chmod": "~1.1.1",
     "grunt-chmod": "~1.1.1",
     "grunt-concurrent": "^2.3.1",
     "grunt-concurrent": "^2.3.1",
     "grunt-contrib-clean": "~2.0.0",
     "grunt-contrib-clean": "~2.0.0",
+    "grunt-contrib-connect": "^2.0.0",
     "grunt-contrib-copy": "~1.0.0",
     "grunt-contrib-copy": "~1.0.0",
     "grunt-contrib-watch": "^1.1.0",
     "grunt-contrib-watch": "^1.1.0",
     "grunt-eslint": "^21.0.0",
     "grunt-eslint": "^21.0.0",
@@ -56,6 +58,7 @@
     "imports-loader": "^0.8.0",
     "imports-loader": "^0.8.0",
     "ink-docstrap": "^1.3.2",
     "ink-docstrap": "^1.3.2",
     "jsdoc-babel": "^0.5.0",
     "jsdoc-babel": "^0.5.0",
+    "nightwatch": "^1.0.17",
     "node-sass": "^4.10.0",
     "node-sass": "^4.10.0",
     "postcss-css-variables": "^0.11.0",
     "postcss-css-variables": "^0.11.0",
     "postcss-import": "^12.0.1",
     "postcss-import": "^12.0.1",
@@ -133,6 +136,7 @@
     "start": "grunt dev",
     "start": "grunt dev",
     "build": "grunt prod",
     "build": "grunt prod",
     "test": "grunt test",
     "test": "grunt test",
+    "testui": "grunt testui",
     "docs": "grunt docs",
     "docs": "grunt docs",
     "lint": "grunt lint",
     "lint": "grunt lint",
     "newop": "node --experimental-modules src/core/config/scripts/newOperation.mjs"
     "newop": "node --experimental-modules src/core/config/scripts/newOperation.mjs"

+ 1 - 1
src/core/config/scripts/newOperation.mjs

@@ -222,7 +222,7 @@ export default ${moduleName};
     console.log(`\nNext steps:
     console.log(`\nNext steps:
 1. Add your operation to ${colors.green("src/core/config/Categories.json")}
 1. Add your operation to ${colors.green("src/core/config/Categories.json")}
 2. Write your operation code.
 2. Write your operation code.
-3. Write tests in ${colors.green("test/tests/operations/")}
+3. Write tests in ${colors.green("tests/operations/tests/")}
 4. Run ${colors.cyan("npm run lint")} and ${colors.cyan("npm run test")}
 4. Run ${colors.cyan("npm run lint")} and ${colors.cyan("npm run test")}
 5. Submit a Pull Request to get your operation added to the official CyberChef repository.`);
 5. Submit a Pull Request to get your operation added to the official CyberChef repository.`);
 
 

+ 182 - 0
tests/browser/nightwatch.js

@@ -0,0 +1,182 @@
+/**
+ * Tests to ensure that the app loads correctly in a reasonable time and that operations can be run.
+ *
+ * @author n1474335 [n1474335@gmail.com]
+ * @copyright Crown Copyright 2018
+ * @license Apache-2.0
+ */
+module.exports = {
+    before: browser => {
+        browser
+            .resizeWindow(1280, 800)
+            .url(browser.launchUrl);
+    },
+
+    "Loading screen": browser => {
+        // Check that the loading screen appears and then disappears within a reasonable time
+        browser
+            .waitForElementVisible("#preloader", 300)
+            .waitForElementNotPresent("#preloader", 10000);
+    },
+
+    "App loaded": browser => {
+        browser.useCss();
+        // Check that various important elements are loaded
+        browser.expect.element("#operations").to.be.visible;
+        browser.expect.element("#recipe").to.be.visible;
+        browser.expect.element("#input").to.be.present;
+        browser.expect.element("#output").to.be.present;
+        browser.expect.element(".op-list").to.be.present;
+        browser.expect.element("#rec-list").to.be.visible;
+        browser.expect.element("#controls").to.be.visible;
+        browser.expect.element("#input-text").to.be.visible;
+        browser.expect.element("#output-text").to.be.visible;
+    },
+
+    "Operations loaded": browser => {
+        browser.useXpath();
+        // Check that an operation in every category has been populated
+        browser.expect.element("//li[contains(@class, 'operation') and text()='To Base64']").to.be.present;
+        browser.expect.element("//li[contains(@class, 'operation') and text()='To Binary']").to.be.present;
+        browser.expect.element("//li[contains(@class, 'operation') and text()='AES Decrypt']").to.be.present;
+        browser.expect.element("//li[contains(@class, 'operation') and text()='PEM to Hex']").to.be.present;
+        browser.expect.element("//li[contains(@class, 'operation') and text()='Power Set']").to.be.present;
+        browser.expect.element("//li[contains(@class, 'operation') and text()='Parse IP range']").to.be.present;
+        browser.expect.element("//li[contains(@class, 'operation') and text()='Remove Diacritics']").to.be.present;
+        browser.expect.element("//li[contains(@class, 'operation') and text()='Sort']").to.be.present;
+        browser.expect.element("//li[contains(@class, 'operation') and text()='To UNIX Timestamp']").to.be.present;
+        browser.expect.element("//li[contains(@class, 'operation') and text()='Extract dates']").to.be.present;
+        browser.expect.element("//li[contains(@class, 'operation') and text()='Gzip']").to.be.present;
+        browser.expect.element("//li[contains(@class, 'operation') and text()='Keccak']").to.be.present;
+        browser.expect.element("//li[contains(@class, 'operation') and text()='JSON Beautify']").to.be.present;
+        browser.expect.element("//li[contains(@class, 'operation') and text()='Detect File Type']").to.be.present;
+        browser.expect.element("//li[contains(@class, 'operation') and text()='Play Media']").to.be.present;
+        browser.expect.element("//li[contains(@class, 'operation') and text()='Disassemble x86']").to.be.present;
+        browser.expect.element("//li[contains(@class, 'operation') and text()='Register']").to.be.present;
+    },
+
+    "Recipe can be run": browser => {
+        const toHex = "//li[contains(@class, 'operation') and text()='To Hex']";
+        const op = "#rec-list .operation .op-title";
+
+        // Check that operation is visible
+        browser
+            .useXpath()
+            .expect.element(toHex).to.be.visible;
+
+        // Add it to the recipe by double clicking
+        browser
+            .useXpath()
+            .moveToElement(toHex, 10, 10)
+            .useCss()
+            .waitForElementVisible(".popover-body", 1000)
+            .doubleClick();
+
+        // Confirm that it has been added to the recipe
+        browser
+            .useCss()
+            .waitForElementVisible(op)
+            .expect.element(op).text.to.contain("To Hex");
+
+        // Enter input
+        browser
+            .useCss()
+            .setValue("#input-text", "Don't Panic.")
+            .click("#bake");
+
+        // Check output
+        browser
+            .useCss()
+            .waitForElementNotVisible("#stale-indicator", 500)
+            .expect.element("#output-text").to.have.value.that.equals("44 6f 6e 27 74 20 50 61 6e 69 63 2e");
+
+        // Clear recipe
+        browser
+            .useCss()
+            .moveToElement(op, 10, 10)
+            .waitForElementNotPresent(".popover-body", 1000)
+            .click("#clr-recipe")
+            .waitForElementNotPresent(op);
+    },
+
+    "Test every module": browser => {
+        browser.useCss();
+
+        // BSON
+        loadOp("BSON deserialise", browser)
+            .waitForElementNotVisible("#output-loader", 5000);
+
+        // Ciphers
+        loadOp("AES Encrypt", browser)
+            .waitForElementNotVisible("#output-loader", 5000);
+
+        // Code
+        loadOp("XPath expression", browser)
+            .waitForElementNotVisible("#output-loader", 5000);
+
+        // Compression
+        loadOp("Gzip", browser)
+            .waitForElementNotVisible("#output-loader", 5000);
+
+        // Crypto
+        loadOp("MD5", browser)
+            .waitForElementNotVisible("#output-loader", 5000);
+
+        // Default
+        loadOp("Fork", browser)
+            .waitForElementNotVisible("#output-loader", 5000);
+
+        // Diff
+        loadOp("Diff", browser)
+            .waitForElementNotVisible("#output-loader", 5000);
+
+        // Encodings
+        loadOp("Encode text", browser)
+            .waitForElementNotVisible("#output-loader", 5000);
+
+        // Image
+        loadOp("Extract EXIF", browser)
+            .waitForElementNotVisible("#output-loader", 5000);
+
+        // PGP
+        loadOp("PGP Encrypt", browser)
+            .waitForElementNotVisible("#output-loader", 5000);
+
+        // PublicKey
+        loadOp("Hex to PEM", browser)
+            .waitForElementNotVisible("#output-loader", 5000);
+
+        // Regex
+        loadOp("Strings", browser)
+            .waitForElementNotVisible("#output-loader", 5000);
+
+        // Shellcode
+        loadOp("Disassemble x86", browser)
+            .waitForElementNotVisible("#output-loader", 5000);
+
+        // URL
+        loadOp("URL Encode", browser)
+            .waitForElementNotVisible("#output-loader", 5000);
+
+        // UserAgent
+        loadOp("Parse User Agent", browser)
+            .waitForElementNotVisible("#output-loader", 5000);
+    },
+
+    after: browser => {
+        browser.end();
+    }
+};
+
+/**
+ * Clears the current recipe and loads a new operation.
+ *
+ * @param {string} opName
+ * @param {Browser} browser
+ */
+function loadOp(opName, browser) {
+    return browser
+        .useCss()
+        .click("#clr-recipe")
+        .urlHash("op=" + opName);
+}

+ 1 - 1
test/TestRegister.mjs → tests/operations/TestRegister.mjs

@@ -8,7 +8,7 @@
  * @copyright Crown Copyright 2017
  * @copyright Crown Copyright 2017
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import Chef from "../src/core/Chef";
+import Chef from "../../src/core/Chef";
 
 
 (function() {
 (function() {
     /**
     /**

+ 59 - 59
test/index.mjs → tests/operations/index.mjs

@@ -24,67 +24,67 @@ global.ENVIRONMENT_IS_WEB = function() {
 };
 };
 
 
 import TestRegister from "./TestRegister";
 import TestRegister from "./TestRegister";
-import "./tests/operations/BCD";
-import "./tests/operations/BSON";
-import "./tests/operations/Base58";
-import "./tests/operations/Base64";
-import "./tests/operations/Base62";
-import "./tests/operations/BitwiseOp";
-import "./tests/operations/ByteRepr";
-import "./tests/operations/CartesianProduct";
-import "./tests/operations/CharEnc";
-import "./tests/operations/Checksum";
-import "./tests/operations/Ciphers";
-import "./tests/operations/Code";
-import "./tests/operations/Comment";
-import "./tests/operations/Compress";
-import "./tests/operations/ConditionalJump";
-import "./tests/operations/Crypt";
-import "./tests/operations/CSV";
-import "./tests/operations/DateTime";
-import "./tests/operations/ExtractEmailAddresses";
-import "./tests/operations/Fork";
-import "./tests/operations/FromDecimal";
-import "./tests/operations/FromGeohash";
-import "./tests/operations/Hash";
-import "./tests/operations/HaversineDistance";
-import "./tests/operations/Hexdump";
-import "./tests/operations/Image";
-import "./tests/operations/Jump";
-import "./tests/operations/JSONBeautify";
-import "./tests/operations/JSONMinify";
-import "./tests/operations/JWTDecode";
-import "./tests/operations/JWTSign";
-import "./tests/operations/JWTVerify";
-import "./tests/operations/MS";
-import "./tests/operations/Magic";
-import "./tests/operations/MorseCode";
-import "./tests/operations/NetBIOS";
-import "./tests/operations/OTP";
-import "./tests/operations/PGP";
-import "./tests/operations/PHP";
-import "./tests/operations/ParseIPRange";
-import "./tests/operations/ParseQRCode";
-import "./tests/operations/PowerSet";
-import "./tests/operations/Regex";
-import "./tests/operations/Register";
-import "./tests/operations/RemoveDiacritics";
-import "./tests/operations/Rotate";
-import "./tests/operations/SeqUtils";
-import "./tests/operations/SetDifference";
-import "./tests/operations/SetIntersection";
-import "./tests/operations/SetUnion";
-import "./tests/operations/StrUtils";
-import "./tests/operations/SymmetricDifference";
-import "./tests/operations/TextEncodingBruteForce";
-import "./tests/operations/ToGeohash";
-import "./tests/operations/TranslateDateTimeFormat";
-import "./tests/operations/Magic";
-import "./tests/operations/ParseTLV";
-import "./tests/operations/Media";
+import "./tests/BCD";
+import "./tests/BSON";
+import "./tests/Base58";
+import "./tests/Base64";
+import "./tests/Base62";
+import "./tests/BitwiseOp";
+import "./tests/ByteRepr";
+import "./tests/CartesianProduct";
+import "./tests/CharEnc";
+import "./tests/Checksum";
+import "./tests/Ciphers";
+import "./tests/Code";
+import "./tests/Comment";
+import "./tests/Compress";
+import "./tests/ConditionalJump";
+import "./tests/Crypt";
+import "./tests/CSV";
+import "./tests/DateTime";
+import "./tests/ExtractEmailAddresses";
+import "./tests/Fork";
+import "./tests/FromDecimal";
+import "./tests/FromGeohash";
+import "./tests/Hash";
+import "./tests/HaversineDistance";
+import "./tests/Hexdump";
+import "./tests/Image";
+import "./tests/Jump";
+import "./tests/JSONBeautify";
+import "./tests/JSONMinify";
+import "./tests/JWTDecode";
+import "./tests/JWTSign";
+import "./tests/JWTVerify";
+import "./tests/MS";
+import "./tests/Magic";
+import "./tests/MorseCode";
+import "./tests/NetBIOS";
+import "./tests/OTP";
+import "./tests/PGP";
+import "./tests/PHP";
+import "./tests/ParseIPRange";
+import "./tests/ParseQRCode";
+import "./tests/PowerSet";
+import "./tests/Regex";
+import "./tests/Register";
+import "./tests/RemoveDiacritics";
+import "./tests/Rotate";
+import "./tests/SeqUtils";
+import "./tests/SetDifference";
+import "./tests/SetIntersection";
+import "./tests/SetUnion";
+import "./tests/StrUtils";
+import "./tests/SymmetricDifference";
+import "./tests/TextEncodingBruteForce";
+import "./tests/ToGeohash";
+import "./tests/TranslateDateTimeFormat";
+import "./tests/Magic";
+import "./tests/ParseTLV";
+import "./tests/Media";
 
 
 // Cannot test operations that use the File type yet
 // Cannot test operations that use the File type yet
-//import "./tests/operations/SplitColourChannels";
+//import "./tests/SplitColourChannels";
 
 
 let allTestsPassing = true;
 let allTestsPassing = true;
 const testStatusCounts = {
 const testStatusCounts = {

+ 1 - 1
test/tests/operations/BCD.mjs → tests/operations/tests/BCD.mjs

@@ -5,7 +5,7 @@
  * @copyright Crown Copyright 2017
  * @copyright Crown Copyright 2017
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/BSON.mjs → tests/operations/tests/BSON.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/Base58.mjs → tests/operations/tests/Base58.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2017
  * @copyright Crown Copyright 2017
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/Base62.mjs → tests/operations/tests/Base62.mjs

@@ -7,7 +7,7 @@
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
 
 
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/Base64.mjs → tests/operations/tests/Base64.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 const ALL_BYTES = [
 const ALL_BYTES = [
     "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
     "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",

+ 1 - 1
test/tests/operations/BitwiseOp.mjs → tests/operations/tests/BitwiseOp.mjs

@@ -5,7 +5,7 @@
  * @copyright Crown Copyright 2017
  * @copyright Crown Copyright 2017
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/ByteRepr.mjs → tests/operations/tests/ByteRepr.mjs

@@ -5,7 +5,7 @@
  * @copyright Crown Copyright 2017
  * @copyright Crown Copyright 2017
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 const ALL_BYTES = [
 const ALL_BYTES = [
     "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
     "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",

+ 1 - 1
test/tests/operations/CSV.mjs → tests/operations/tests/CSV.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 const EXAMPLE_CSV = `A,B,C,D,E,F\r
 const EXAMPLE_CSV = `A,B,C,D,E,F\r
 1,2,3,4,5,6\r
 1,2,3,4,5,6\r

+ 1 - 1
test/tests/operations/CartesianProduct.mjs → tests/operations/tests/CartesianProduct.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/CharEnc.mjs → tests/operations/tests/CharEnc.mjs

@@ -5,7 +5,7 @@
  * @copyright Crown Copyright 2017
  * @copyright Crown Copyright 2017
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/Checksum.mjs → tests/operations/tests/Checksum.mjs

@@ -5,7 +5,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 const BASIC_STRING = "The ships hung in the sky in much the same way that bricks don't.";
 const BASIC_STRING = "The ships hung in the sky in much the same way that bricks don't.";
 const UTF8_STR = "ნუ პანიკას";
 const UTF8_STR = "ნუ პანიკას";

+ 1 - 1
test/tests/operations/Ciphers.mjs → tests/operations/tests/Ciphers.mjs

@@ -7,7 +7,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 
 
 TestRegister.addTests([
 TestRegister.addTests([

+ 1 - 1
test/tests/operations/Code.mjs → tests/operations/tests/Code.mjs

@@ -7,7 +7,7 @@
  * @copyright Crown Copyright 2017
  * @copyright Crown Copyright 2017
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 const JSON_TEST_DATA = {
 const JSON_TEST_DATA = {
     "store": {
     "store": {

+ 1 - 1
test/tests/operations/Comment.mjs → tests/operations/tests/Comment.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 const ALL_BYTES = [
 const ALL_BYTES = [
     "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
     "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",

+ 1 - 1
test/tests/operations/Compress.mjs → tests/operations/tests/Compress.mjs

@@ -5,7 +5,7 @@
  * @copyright Crown Copyright 2017
  * @copyright Crown Copyright 2017
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/ConditionalJump.mjs → tests/operations/tests/ConditionalJump.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/Crypt.mjs → tests/operations/tests/Crypt.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     /**
     /**

+ 1 - 1
test/tests/operations/DateTime.mjs → tests/operations/tests/DateTime.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2017
  * @copyright Crown Copyright 2017
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/ExtractEmailAddresses.mjs → tests/operations/tests/ExtractEmailAddresses.mjs

@@ -5,7 +5,7 @@
  * @copyright Crown Copyright 2017
  * @copyright Crown Copyright 2017
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/Fork.mjs → tests/operations/tests/Fork.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/FromDecimal.mjs → tests/operations/tests/FromDecimal.mjs

@@ -5,7 +5,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @licence Apache-2.0
  * @licence Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/FromGeohash.mjs → tests/operations/tests/FromGeohash.mjs

@@ -5,7 +5,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/Hash.mjs → tests/operations/tests/Hash.mjs

@@ -5,7 +5,7 @@
  * @copyright Crown Copyright 2017
  * @copyright Crown Copyright 2017
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/HaversineDistance.mjs → tests/operations/tests/HaversineDistance.mjs

@@ -5,7 +5,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/Hexdump.mjs → tests/operations/tests/Hexdump.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 const ALL_BYTES = [
 const ALL_BYTES = [
     "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
     "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",

+ 1 - 1
test/tests/operations/Image.mjs → tests/operations/tests/Image.mjs

@@ -7,7 +7,7 @@
  * @copyright Crown Copyright 2017
  * @copyright Crown Copyright 2017
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/JSONBeautify.mjs → tests/operations/tests/JSONBeautify.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/JSONMinify.mjs → tests/operations/tests/JSONMinify.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/JWTDecode.mjs → tests/operations/tests/JWTDecode.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 const outputObject = JSON.stringify({
 const outputObject = JSON.stringify({
     String: "SomeString",
     String: "SomeString",

+ 1 - 1
test/tests/operations/JWTSign.mjs → tests/operations/tests/JWTSign.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 const inputObject = JSON.stringify({
 const inputObject = JSON.stringify({
     String: "SomeString",
     String: "SomeString",

+ 1 - 1
test/tests/operations/JWTVerify.mjs → tests/operations/tests/JWTVerify.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 const outputObject = JSON.stringify({
 const outputObject = JSON.stringify({
     String: "SomeString",
     String: "SomeString",

+ 1 - 1
test/tests/operations/Jump.mjs → tests/operations/tests/Jump.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/MS.mjs → tests/operations/tests/MS.mjs

@@ -5,7 +5,7 @@
  * @copyright Crown Copyright 2017
  * @copyright Crown Copyright 2017
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/Magic.mjs → tests/operations/tests/Magic.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 
 
 TestRegister.addTests([
 TestRegister.addTests([

+ 1 - 1
test/tests/operations/Media.mjs → tests/operations/tests/Media.mjs

@@ -4,7 +4,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/MorseCode.mjs → tests/operations/tests/MorseCode.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2017
  * @copyright Crown Copyright 2017
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/NetBIOS.mjs → tests/operations/tests/NetBIOS.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2017
  * @copyright Crown Copyright 2017
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/OTP.mjs → tests/operations/tests/OTP.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2017
  * @copyright Crown Copyright 2017
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/PGP.mjs → tests/operations/tests/PGP.mjs

@@ -5,7 +5,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 const ASCII_TEXT = "A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools.";
 const ASCII_TEXT = "A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools.";
 
 

+ 1 - 1
test/tests/operations/PHP.mjs → tests/operations/tests/PHP.mjs

@@ -7,7 +7,7 @@
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
 
 
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/ParseIPRange.mjs → tests/operations/tests/ParseIPRange.mjs

@@ -5,7 +5,7 @@
  * @copyright Crown Copyright 2017
  * @copyright Crown Copyright 2017
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/ParseQRCode.mjs → tests/operations/tests/ParseQRCode.mjs

@@ -5,7 +5,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/ParseTLV.mjs → tests/operations/tests/ParseTLV.mjs

@@ -6,7 +6,7 @@
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
 
 
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/PowerSet.mjs → tests/operations/tests/PowerSet.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/Regex.mjs → tests/operations/tests/Regex.mjs

@@ -5,7 +5,7 @@
  * @copyright Crown Copyright 2017
  * @copyright Crown Copyright 2017
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/Register.mjs → tests/operations/tests/Register.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/RemoveDiacritics.mjs → tests/operations/tests/RemoveDiacritics.mjs

@@ -5,7 +5,7 @@
  * @copyright Crown Copyright 2017
  * @copyright Crown Copyright 2017
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/Rotate.mjs → tests/operations/tests/Rotate.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 
 
 TestRegister.addTests([
 TestRegister.addTests([

+ 1 - 1
test/tests/operations/SeqUtils.mjs → tests/operations/tests/SeqUtils.mjs

@@ -5,7 +5,7 @@
  * @copyright Copyright 2017
  * @copyright Copyright 2017
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/SetDifference.mjs → tests/operations/tests/SetDifference.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/SetIntersection.mjs → tests/operations/tests/SetIntersection.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/SetUnion.mjs → tests/operations/tests/SetUnion.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

File diff suppressed because it is too large
+ 1 - 1
tests/operations/tests/SplitColourChannels.mjs


+ 1 - 1
test/tests/operations/StrUtils.mjs → tests/operations/tests/StrUtils.mjs

@@ -5,7 +5,7 @@
  * @copyright Crown Copyright 2017
  * @copyright Crown Copyright 2017
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/SymmetricDifference.mjs → tests/operations/tests/SymmetricDifference.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/TextEncodingBruteForce.mjs → tests/operations/tests/TextEncodingBruteForce.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/ToGeohash.mjs → tests/operations/tests/ToGeohash.mjs

@@ -5,7 +5,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

+ 1 - 1
test/tests/operations/TranslateDateTimeFormat.mjs → tests/operations/tests/TranslateDateTimeFormat.mjs

@@ -6,7 +6,7 @@
  * @copyright Crown Copyright 2018
  * @copyright Crown Copyright 2018
  * @license Apache-2.0
  * @license Apache-2.0
  */
  */
-import TestRegister from "../../TestRegister";
+import TestRegister from "../TestRegister";
 
 
 TestRegister.addTests([
 TestRegister.addTests([
     {
     {

Some files were not shown because too many files changed in this diff