// tests structure
// * artifact - the address of anything written to disk, so that it can be removed
// * command - the command to execute minus the `node js/services` part
// * file - a file system address to open
// * qualifier - how to test, see simulationItem in index.d.ts for appropriate values
// * test - the value to compare against
(function simulations() {
    "use strict";
    const eol = require("os").EOL, sep = require("path").sep, projectPath = (function node_project() {
        const dirs = __dirname.split(sep);
        return dirs.slice(0, dirs.length - 2).join(sep) + sep;
    }()), supersep = (sep === "\\")
        ? "\\\\"
        : sep, text = {
        angry: "\u001b[1m\u001b[31m",
        blue: "\u001b[34m",
        bold: "\u001b[1m",
        clear: "\u001b[24m\u001b[22m",
        cyan: "\u001b[36m",
        diffchar: "\u001b[1m\u001b[4m",
        green: "\u001b[32m",
        nocolor: "\u001b[39m",
        none: "\u001b[0m",
        purple: "\u001b[35m",
        red: "\u001b[31m",
        underline: "\u001b[4m",
        yellow: "\u001b[33m"
    }, tests = [
        {
            command: "asdf",
            qualifier: "contains",
            test: `${text.angry}*${text.none} locally installed  - ${text.cyan}node js/services commands${text.none}`
        },
        {
            command: "b",
            qualifier: "is",
            test: `Command '${text.angry}b${text.none}' is ambiguous as it could refer to any of: [${text.cyan}base64, beautify, build${text.none}]`
        },
        {
            command: "base64",
            qualifier: "contains",
            test: "No path to encode."
        },
        {
            command: `base64 ${projectPath}tsconfig.json`,
            qualifier: "is",
            test: "ewogICAgImNvbXBpbGVyT3B0aW9ucyI6IHsKICAgICAgICAidGFyZ2V0IjogIkVTNiIsCiAgICAgICAgIm91dERpciI6ICJqcyIKICAgIH0sCiAgICAiaW5jbHVkZSI6IFsKICAgICAgICAiKi50cyIsCiAgICAgICAgIioqLyoudHMiCiAgICBdLAogICAgImV4Y2x1ZGUiOiBbCiAgICAgICAgIjIiLAogICAgICAgICIzIiwKICAgICAgICAianMiLAogICAgICAgICJub2RlX21vZHVsZXMiLAogICAgICAgICJ0ZXN0IgogICAgXQp9"
        },
        {
            command: "base64 decode string:\"bXkgYmlnIHN0cmluZyBzYW1wbGU=\"",
            qualifier: "is",
            test: "my big string sample"
        },
        {
            command: "base64 decode string:\"ewogICAgImNvbXBpbGVyT3B0aW9ucyI6IHsKICAgICAgICAidGFyZ2V0IjogIkVTNiIsCiAgICAgICAgIm91dERpciI6ICJqcyIKICAgIH0sCiAgICAiaW5jbHVkZSI6IFsKICAgICAgICAiKi50cyIsCiAgICAgICAgIioqLyoudHMiCiAgICBdLAogICAgImV4Y2x1ZGUiOiBbCiAgICAgICAgImpzIiwKICAgICAgICAibm9kZV9tb2R1bGVzIiwKICAgICAgICAidGVzdCIKICAgIF0KfQ==\"",
            qualifier: "ends",
            test: `{\n    "compilerOptions": {\n        "target": "ES6",\n        "outDir": "js"\n    },\n    "include": [\n        "*.ts",\n        "*\u002a/\u002a.ts"\n    ],\n    "exclude": [\n        "js",\n        "node_modules",\n        "test"\n    ]\n}`
        },
        {
            command: "base64 https://duckduckgo.com/assets/logo_homepage.normal.v107.svg",
            qualifier: "is",
            test: " "
        },
        {
            command: "base64 string:\"my big string sample\"",
            qualifier: "is",
            test: "bXkgYmlnIHN0cmluZyBzYW1wbGU="
        },
        {
            command: `beau source:"${projectPath}api" read_method:file`,
            qualifier: "contains",
            test: `Option ${text.cyan}read_method${text.none} has value ${text.green}file${text.none} but ${text.angry}option source does not point to a file${text.none}.`
        },
        {
            artifact: `${projectPath}test`,
            command: `beautify source:"${projectPath}api" read_method:directory output:"test"`,
            qualifier: "contains",
            test: ` files written to ${text.cyan + projectPath}test${text.none}.`
        },
        {
            command: `beautify source:"${projectPath}api" read_method:file`,
            qualifier: "contains",
            test: `Option ${text.cyan}read_method${text.none} has value ${text.green}file${text.none} but ${text.angry}option source does not point to a file${text.none}.`
        },
        {
            artifact: `${projectPath}test`,
            command: `beautify source:"${projectPath}api" read_method:subdirectory output:"test"`,
            qualifier: "contains",
            test: ` files written to ${text.cyan + projectPath}test${text.none}.`
        },
        {
            command: `beautify source:"${projectPath}tsconfig.json" read_method:directory`,
            qualifier: "contains",
            test: `Option ${text.cyan}read_method${text.none} has value ${text.green}directory${text.none} but ${text.angry}option source does not point to a directory${text.none}.`
        },
        {
            command: `beautify source:"${projectPath}tsconfig.json" read_method:file`,
            qualifier: "is",
            test: `{\n    "compilerOptions": {\n        "target": "ES6",\n        "outDir": "js"\n    },\n    "include": [\n        "*.ts", "*\u002a/*.ts"\n    ],\n    "exclude": ["2", "3", "js", "node_modules", "test"]\n}`
        },
        {
            command: `beautify source:"${projectPath}tsconfig.json" read_method:file language:text`,
            qualifier: "contains",
            test: `Language value ${text.angry}text${text.none} is not compatible with command ${text.green}beautify${text.none}.`
        },
        {
            command: `beautify source:"${projectPath}tsconfig.json" read_method:subdirectory`,
            qualifier: "contains",
            test: `Option ${text.cyan}read_method${text.none} has value ${text.green}subdirectory${text.none} but ${text.angry}option source does not point to a directory${text.none}.`
        },
        {
            command: "comm version",
            qualifier: "contains",
            test: "Prints the current version number and date to the shell."
        },
        {
            command: "commands",
            qualifier: "contains",
            test: `Commands are tested using the ${text.green}simulation${text.none} command.`
        },
        {
            command: "commands base64",
            qualifier: "contains",
            test: `   ${text.cyan}prettydiff base64 encode string:"my string to encode"${text.none}`
        },
        {
            command: "commands version",
            qualifier: "contains",
            test: "Prints the current version number and date to the shell."
        },
        {
            command: "copy",
            qualifier: "contains",
            test: "The copy command requires a source path and a destination path."
        },
        {
            command: "copy js",
            qualifier: "contains",
            test: "The copy command requires a source path and a destination path."
        },
        {
            artifact: `${projectPath}temp`,
            command: `copy ${projectPath}js ${projectPath}temp`,
            qualifier: "filesystem contains",
            test: `temp${sep}minify${sep}style.js`
        },
        {
            artifact: `${projectPath}temp`,
            command: `copy ${projectPath}js ${projectPath}temp 2`,
            file: `${projectPath}temp${sep}minify${sep}style.js`,
            qualifier: "file begins",
            test: "/*global global, prettydiff\u002a/"
        },
        {
            command: `diff source:"${projectPath}tests${sep}diffbase${sep}beautify_script_javascript_vertical.txt" diff:"${projectPath}tests${sep}diffbase${sep}beautify_script_javascript_vertical.txt" read_method:file`,
            qualifier: "is",
            test: `${text.green}Pretty Diff found no differences.${text.none}`
        },
        {
            command: `diff source:"${projectPath}tests${sep}diffbase${sep}beautify_script_javascript_vertical.txt" diff:"${projectPath}tests${sep}diffbase${sep}beautify_script_javascript_vertical.txt" read_method:file diff_format:html`,
            qualifier: "contains",
            test: "<p><strong>Number of differences:</strong> <em>0</em> differences from <em>0</em> lines of code.</p>"
        },
        {
            command: `diff source:"${projectPath}tests${sep}diffbase${sep}beautify_script_javascript_vertical.txt" diff:"${projectPath}tests${sep}diffbase${sep}beautify_script_javascript_vertical.txt" read_method:file diff_format:html 2`,
            qualifier: "contains",
            test: "folds from line XXXX to line 14"
        },
        {
            artifact: `${projectPath}test.diff`,
            command: `diff source:"${projectPath}tests${sep}diffbase${sep}beautify_script_javascript_vertical.txt" diff:"${projectPath}tests${sep}diffnew${sep}beautify_script_javascript_vertical.txt" diff_format:html read_method:file output:test.diff`,
            qualifier: "contains",
            test: `Wrote output to ${text.green + projectPath}test.diff${text.none}`
        },
        {
            command: `diff source:"${projectPath}tests${sep}diffbase${sep}beautify_script_javascript_vertical.txt" diff:"${projectPath}tests${sep}diffnew${sep}beautify_script_javascript_vertical.txt" diff_format:html output:test.diff`,
            qualifier: "contains",
            test: `Pretty Diff found ${text.cyan}2${text.none} differences on ${text.cyan}2${text.none} lines.`
        },
        {
            artifact: `${projectPath}test.diff`,
            command: `diff source:"${projectPath}tests${sep}diffbase${sep}beautify_script_javascript_vertical.txt" diff:"${projectPath}tests${sep}diffnew${sep}beautify_script_javascript_vertical.txt" read_method:file output:test.diff`,
            qualifier: "contains",
            test: `Wrote output to ${text.green + projectPath}test.diff${text.none}`
        },
        {
            command: `diff source:"${projectPath}tests${sep}diffbase${sep}beautify_script_javascript_vertical.txt" diff:"${projectPath}tests${sep}diffnew${sep}beautify_script_javascript_vertical.txt" read_method:file`,
            qualifier: "contains",
            test: `Pretty Diff found ${text.cyan}2${text.none} differences on ${text.cyan}2${text.none} lines.`
        },
        {
            command: `diff source:"${projectPath}tests${sep}diffbase${sep}beautify_script_javascript_vertical.txt" diff:"${projectPath}tests${sep}diffnew${sep}beautify_script_javascript_vertical.txt" read_method:file diff_format:html`,
            qualifier: "contains",
            test: `Pretty Diff found ${text.cyan}2${text.none} differences on ${text.cyan}2${text.none} lines.`
        },
        {
            command: `diff source:"${projectPath}tests${sep}diffbase${sep}beautify_script_javascript_vertical.txt" diff:"${projectPath}tests${sep}diffnew${sep}beautify_script_javascript_vertical.txt" read_method:file diff_format:html 2`,
            qualifier: "contains",
            test: "folds from line XXXX to line 2"
        },
        {
            command: `diff source:"hello" diff:"shelo" readmethod:screen`,
            qualifier: "contains",
            test: `${text.cyan}Line: 1${text.none}\n${text.red}hel${text.diffchar}l${text.clear}o${text.none}\n${text.green + text.diffchar}s${text.clear}helo${text.none}`
        },
        {
            command: `diff source:"hello" diff:"shelo" readmethod:screen 2`,
            qualifier: "contains",
            test: `Pretty Diff found ${text.cyan}1${text.none} difference on ${text.cyan}1${text.none} line.`
        },
        {
            command: `diff source:"hello" diff:"shelo" readmethod:screen crlf:true language:text`,
            qualifier: "contains",
            test: `${text.cyan}Line: 1${text.none}\r\n${text.red}hel${text.diffchar}l${text.clear}o${text.none}\r\n${text.green + text.diffchar}s${text.clear}helo${text.none}`
        },
        {
            command: "directory",
            qualifier: "contains",
            test: "No path supplied for the directory command."
        },
        {
            command: `directory ".${supersep}" ignore ["node_modules", ".git", ".DS_Store", "2", "3", "beta", "ignore", "sparser"] --verbose`,
            qualifier: "contains",
            test: ` matching items from address `
        },
        {
            command: `directory ${projectPath}js`,
            qualifier: "contains",
            test: `js${supersep}minify${supersep}style.js","file"`
        },
        {
            command: `directory ${projectPath}js 2`,
            qualifier: "contains",
            test: `,"ctime":`
        },
        {
            command: `directory ${projectPath}js ignore ["minify"]`,
            qualifier: "not contains",
            test: `js${supersep}minify${supersep}style.js"`
        },
        {
            command: `directory ${projectPath}js listonly`,
            qualifier: "not contains",
            test: `,"ctime":`
        },
        {
            command: `directory ${projectPath}js typeof`,
            qualifier: "is",
            test: "directory"
        },
        {
            command: `directory typeof ${projectPath}js`,
            qualifier: "is",
            test: "directory"
        },
        {
            command: `directory typeof ${projectPath}js${sep}beautify${sep}style.js`,
            qualifier: "is",
            test: "file"
        },
        {
            command: "get https://duckduckgo.com/",
            qualifier: "contains",
            test: `DDG.page = new DDG.Pages.Home();`
        },
        {
            command: "hash",
            qualifier: "contains",
            test: `Command ${text.cyan}hash${text.none} requires some form of address of something to analyze, ${text.angry}but no address is provided${text.none}.`
        },
        {
            command: "hash asdf",
            qualifier: "contains",
            test: `${sep}asdf${text.none} is not a file or directory.`
        },
        {
            command: `hash ${projectPath}tsconfig.json`,
            qualifier: "is",
            test: "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e"
        },
        {
            command: `hash ${projectPath}tsconfig.json --verbose`,
            qualifier: "contains",
            test: "Sparser version "
        },
        {
            command: `hash ${projectPath} list ignore ["node_modules", ".git", ".DS_Store", "2", "3", "beta", "ignore", "sparser"]`,
            qualifier: "contains",
            test: `tsconfig.json":"8a02e6b682f96515abedc9f30096f2f3fce41fbe08e4b0400323f5fbd4b92cdd6a00b8515b25ca7c06d7840c71c08f1b00b070a068342a911939a1e21ef09a94"`
        },
        {
            command: `hash ${projectPath} list ignore [.git, "node_modules", ".DS_Store", "2", "3", "beta", "ignore", "sparser", "tests", "js", "api", "beautify", "minify", "css", 'space test']`,
            qualifier: "contains",
            test: `tsconfig.json":"8a02e6b682f96515abedc9f30096f2f3fce41fbe08e4b0400323f5fbd4b92cdd6a00b8515b25ca7c06d7840c71c08f1b00b070a068342a911939a1e21ef09a94"`
        },
        {
            command: `hash ${projectPath} list ignore [.git, "node_modules", ".DS_Store", "2", "3", "beta", "ignore", "sparser", "tests", "js", "api", "beautify", "minify", "css", "space test", "test"]`,
            qualifier: "not contains",
            test: "api"
        },
        {
            command: "hash https://duckduckgo.com/assets/logo_homepage.normal.v107.svg",
            qualifier: "is",
            test: "ca5259a8e10a06cae407fa016f94a7a7f44ff55047a03857ab5f3ceae4ed443f59e684dc3dba99c8fc1a847e992e008b234766327bd28265e16c8a549b40633e"
        },
        {
            command: "help",
            qualifier: "contains",
            test: `To get started try the ${text.green}commands${text.none} command.`
        },
        {
            command: "help 2",
            qualifier: "ends",
            test: "XXXX seconds total time"
        },
        {
            command: `mini source:"${projectPath}api" read_method:file`,
            qualifier: "contains",
            test: `Option ${text.cyan}read_method${text.none} has value ${text.green}file${text.none} but ${text.angry}option source does not point to a file${text.none}.`
        },
        {
            command: `minify source:"${projectPath}api" read_method:file`,
            qualifier: "contains",
            test: `Option ${text.cyan}read_method${text.none} has value ${text.green}file${text.none} but ${text.angry}option source does not point to a file${text.none}.`
        },
        {
            command: `minify source:"${projectPath}tsconfig.json" read_method:directory`,
            qualifier: "contains",
            test: `Option ${text.cyan}read_method${text.none} has value ${text.green}directory${text.none} but ${text.angry}option source does not point to a directory${text.none}.`
        },
        {
            command: `minify source:"${projectPath}tsconfig.json" read_method:file`,
            qualifier: "is",
            test: `{"compilerOptions":{"target":"ES6","outDir":"js"},"include":["*.ts","*\u002a/*.ts"],"exclude":["2","3","js","node_modules","test"]}`
        },
        {
            command: `minify source:"${projectPath}tsconfig.json" read_method:file language:text`,
            qualifier: "contains",
            test: `Language value ${text.angry}text${text.none} is not compatible with command ${text.green}minify${text.none}.`
        },
        {
            command: `minify source:"${projectPath}tsconfig.json" read_method:subdirectory`,
            qualifier: "contains",
            test: `Option ${text.cyan}read_method${text.none} has value ${text.green}subdirectory${text.none} but ${text.angry}option source does not point to a directory${text.none}.`
        },
        {
            command: "opts",
            qualifier: "contains",
            test: `${text.angry}* ${text.none + text.cyan}space_close       ${text.none}: Markup self-closing tags end will end with ' />' instead of '/>'.`
        },
        {
            command: "opts 2",
            qualifier: "contains",
            test: `${text.green}77${text.none} matching options.`
        },
        {
            command: "opts api:node",
            qualifier: "not contains",
            test: "ternaryline"
        },
        {
            command: "opts lexer:script",
            qualifier: "not contains",
            test: `${text.angry}* ${text.none + text.cyan}version`
        },
        {
            command: "opts mode",
            qualifier: "contains",
            test: `${text.angry}* ${text.none + text.cyan}api       ${text.none}: any`
        },
        {
            command: "opts mode 2",
            qualifier: "contains",
            test: `   ${text.angry}- ${text.none + text.cyan}beautify${text.none}: beautifies code and returns a string`
        },
        {
            command: "opts top_comments",
            qualifier: "contains",
            test: `${text.angry}* ${text.none + text.cyan}api       ${text.none}: any`
        },
        {
            command: "options lexer:script api:node",
            qualifier: "contains",
            test: `${text.angry}Pretty Diff has no options matching the query criteria.${text.none}`
        },
        {
            command: "options mode:diff api:node",
            qualifier: "contains",
            test: `${text.angry}* ${text.none + text.cyan}summary_only${text.none}: Node only option to output only number of differences.`
        },
        {
            command: "par",
            qualifier: "contains",
            test: `Pretty Diff requires option ${text.cyan}source${text.none} when using command ${text.green}parse${text.none}. Example:`
        },
        {
            command: "parse",
            qualifier: "contains",
            test: `Pretty Diff requires option ${text.cyan}source${text.none} when using command ${text.green}parse${text.none}. Example:`
        },
        {
            command: `parse ${projectPath}tsconfig.json`,
            qualifier: "contains",
            test: `{"begin":[-1,0,0,0,3,3,3,3,3,3,3,3,0,0,0,0,15,15,15,15,0,0,0,0,23,23,23,23,23,23,23,23,23,23,0],"ender":[34,34,34,11,11,11,11,11,11,11,11,11,34,34,34,19,19,19,19,19,34,34,34,33,33,33,33,33,33,33,33,33,33,33,34],"lexer":["script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script"],"lines":[0,2,0,1,2,0,1,0,2,0,1,2,0,2,0,1,2,0,2,2,0,2,0,1,2,0,2,0,2,0,2,0,2,2,2],"stack":["global","object","object","object","object","object","object","object","object","object","object","object","object","object","object","object","array","array","array","array","object","object","object","object","array","array","array","array","array","array","array","array","array","array","object"],"token":["{","\\"compilerOptions\\"",":","{","\\"target\\"",":","\\"ES6\\"",",","\\"outDir\\"",":","\\"js\\"","}",",","\\"include\\"",":","[","\\"*.ts\\"",",","\\"**/*.ts\\"","]",",","\\"exclude\\"",":","[","\\"2\\"",",","\\"3\\"",",","\\"js\\"",",","\\"node_modules\\"",",","\\"test\\"","]","}"],"types":["start","string","operator","start","string","operator","string","separator","string","operator","string","end","separator","string","operator","start","string","separator","string","end","separator","string","operator","start","string","separator","string","separator","string","separator","string","separator","string","end","end"]}`
        },
        {
            command: `parse ${projectPath}tsconfig.json parse_format:table`,
            qualifier: "contains",
            test: `Parsed input from file ${text.cyan + projectPath}tsconfig.json${text.none}`
        },
        {
            command: `parse ${projectPath}tsconfig.json parse_format:table 2`,
            qualifier: "contains",
            test: `index | begin | ender | lexer  | lines | stack       | types       | token${eol}------|-------|-------|--------|-------|-------------|-------------|------${eol + text.green}0     | -1    | XXXX    | script | XXXX     | global      | start       | {${text.none}`
        },
        {
            artifact: `${projectPath}parsetest.txt`,
            command: `parse ${projectPath}tsconfig.json read_method:file output:"parsetest.txt"`,
            file: `${projectPath}parsetest.txt`,
            qualifier: "file is",
            test: `{"begin":[-1,0,0,0,3,3,3,3,3,3,3,3,0,0,0,0,15,15,15,15,0,0,0,0,23,23,23,23,23,23,23,23,23,23,0],"ender":[34,34,34,11,11,11,11,11,11,11,11,11,34,34,34,19,19,19,19,19,34,34,34,33,33,33,33,33,33,33,33,33,33,33,34],"lexer":["script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script"],"lines":[0,2,0,1,2,0,1,0,2,0,1,2,0,2,0,1,2,0,2,2,0,2,0,1,2,0,2,0,2,0,2,0,2,2,2],"stack":["global","object","object","object","object","object","object","object","object","object","object","object","object","object","object","object","array","array","array","array","object","object","object","object","array","array","array","array","array","array","array","array","array","array","object"],"token":["{","\\"compilerOptions\\"",":","{","\\"target\\"",":","\\"ES6\\"",",","\\"outDir\\"",":","\\"js\\"","}",",","\\"include\\"",":","[","\\"*.ts\\"",",","\\"**/*.ts\\"","]",",","\\"exclude\\"",":","[","\\"2\\"",",","\\"3\\"",",","\\"js\\"",",","\\"node_modules\\"",",","\\"test\\"","]","}"],"types":["start","string","operator","start","string","operator","string","separator","string","operator","string","end","separator","string","operator","start","string","separator","string","end","separator","string","operator","start","string","separator","string","separator","string","separator","string","separator","string","end","end"]}`
        },
        {
            artifact: `${projectPath}parsetest.txt`,
            command: `parse ${projectPath}tsconfig.json read_method:file output:"${projectPath}parsetest.txt"`,
            qualifier: "begins",
            test: `Wrote output to ${text.green + projectPath}parsetest.txt${text.none} at`
        },
        {
            command: `parse ${projectPath}tsconfig.json read_method:file`,
            qualifier: "is",
            test: `{"begin":[-1,0,0,0,3,3,3,3,3,3,3,3,0,0,0,0,15,15,15,15,0,0,0,0,23,23,23,23,23,23,23,23,23,23,0],"ender":[34,34,34,11,11,11,11,11,11,11,11,11,34,34,34,19,19,19,19,19,34,34,34,33,33,33,33,33,33,33,33,33,33,33,34],"lexer":["script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script","script"],"lines":[0,2,0,1,2,0,1,0,2,0,1,2,0,2,0,1,2,0,2,2,0,2,0,1,2,0,2,0,2,0,2,0,2,2,2],"stack":["global","object","object","object","object","object","object","object","object","object","object","object","object","object","object","object","array","array","array","array","object","object","object","object","array","array","array","array","array","array","array","array","array","array","object"],"token":["{","\\"compilerOptions\\"",":","{","\\"target\\"",":","\\"ES6\\"",",","\\"outDir\\"",":","\\"js\\"","}",",","\\"include\\"",":","[","\\"*.ts\\"",",","\\"**/*.ts\\"","]",",","\\"exclude\\"",":","[","\\"2\\"",",","\\"3\\"",",","\\"js\\"",",","\\"node_modules\\"",",","\\"test\\"","]","}"],"types":["start","string","operator","start","string","operator","string","separator","string","operator","string","end","separator","string","operator","start","string","separator","string","end","separator","string","operator","start","string","separator","string","separator","string","separator","string","separator","string","end","end"]}`
        },
        {
            command: `parse source:"${projectPath}api" read_method:file`,
            qualifier: "contains",
            test: `Option ${text.cyan}read_method${text.none} has value ${text.green}file${text.none} but ${text.angry}option source does not point to a file${text.none}.`
        },
        {
            command: `parse source:"${projectPath}tsconfig.json" read_method:directory`,
            qualifier: "contains",
            test: `Option ${text.cyan}read_method${text.none} has value ${text.green}directory${text.none} but ${text.angry}option source does not point to a directory${text.none}.`
        },
        {
            command: `parse source:"${projectPath}tsconfig.json" read_method:file language:text`,
            qualifier: "contains",
            test: `Language value ${text.angry}text${text.none} is not compatible with command ${text.green}parse${text.none}.`
        },
        {
            command: `parse source:"${projectPath}tsconfig.json" read_method:subdirectory`,
            qualifier: "contains",
            test: `Option ${text.cyan}read_method${text.none} has value ${text.green}subdirectory${text.none} but ${text.angry}option source does not point to a directory${text.none}.`
        },
        {
            command: "parse tsconfig",
            qualifier: "is",
            test: `{"begin":[-1,-1],"ender":[-1,-1],"lexer":["script","script"],"lines":[0,0],"stack":["global","global"],"token":["tsconfig","x;"],"types":["word","separator"]}`
        },
        {
            command: "parse tsconfig read_method:file",
            qualifier: "contains",
            test: "ENOENT: no such file or directory"
        },
        {
            command: "parse tsconfig verbose",
            qualifier: "contains",
            test: "Parsed input from terminal."
        },
        {
            command: "performance hash browser-demo.js",
            qualifier: "contains",
            test: "] Character size"
        },
        {
            command: "performance base64 browser-demo.js",
            qualifier: "contains",
            test: "] Milliseconds, \u00b1"
        },
        {
            command: "performance beautify browser-demo.js",
            qualifier: "contains",
            test: "Pretty Diff version"
        },
        {
            command: "performance build browser-demo.js",
            qualifier: "contains",
            test: "The performance tool cannot test the build command."
        },
        {
            command: "performance performance browser-demo.js",
            qualifier: "contains",
            test: "The performance tool cannot test itself."
        },
        {
            command: "prettydiff_debug",
            qualifier: "contains",
            test: `${text.green}## Command Line Instruction${text.none}`
        },
        {
            command: "version",
            qualifier: "ends",
            test: " seconds total time"
        },
        {
            command: "version 2",
            qualifier: "begins",
            test: `Sparser version ${text.angry}`
        }
    ];
    module.exports = tests;
}());
