{
  "stats": {
    "suites": 19,
    "tests": 57,
    "passes": 57,
    "pending": 0,
    "failures": 0,
    "start": "2018-11-16T03:45:01.201Z",
    "end": "2018-11-16T03:45:01.251Z",
    "duration": 50,
    "testsRegistered": 57,
    "passPercent": 100,
    "pendingPercent": 0,
    "other": 0,
    "hasOther": false,
    "skipped": 0,
    "hasSkipped": false,
    "passPercentClass": "success",
    "pendingPercentClass": "danger"
  },
  "suites": {
    "uuid": "91504e35-0e0e-447f-8764-50c576506b40",
    "title": "",
    "fullFile": "",
    "file": "",
    "beforeHooks": [],
    "afterHooks": [],
    "tests": [],
    "suites": [
      {
        "uuid": "8f9023c1-02a9-43c4-b86d-1511093ea491",
        "title": "Grid",
        "fullFile": "C:\\Users\\Administrator\\Desktop\\PathFinding.js-master\\test\\Grid.js",
        "file": "\\test\\Grid.js",
        "beforeHooks": [],
        "afterHooks": [],
        "tests": [],
        "suites": [
          {
            "uuid": "f639bcdb-ac0d-40e5-83c2-4461703a68b9",
            "title": "generate without matrix",
            "fullFile": "C:\\Users\\Administrator\\Desktop\\PathFinding.js-master\\test\\Grid.js",
            "file": "\\test\\Grid.js",
            "beforeHooks": [
              {
                "title": "\"before each\" hook",
                "fullTitle": "Grid generate without matrix \"before each\" hook",
                "timedOut": false,
                "duration": 0,
                "pass": false,
                "fail": false,
                "pending": false,
                "code": "width = 10;\nheight = 20;\ngrid = new Grid(width, height);",
                "err": {},
                "isRoot": false,
                "uuid": "ac8bdd86-5a1a-4eed-9d2c-ab634b9c68ec",
                "isHook": true,
                "skipped": false
              }
            ],
            "afterHooks": [],
            "tests": [
              {
                "title": "should have correct size",
                "fullTitle": "Grid generate without matrix should have correct size",
                "timedOut": false,
                "duration": 0,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "grid.width.should.equal(width);\ngrid.height.should.equal(height);\ngrid.nodes.length.should.equal(height);\nfor (var i = 0; i < height; ++i) {\n    grid.nodes[i].length.should.equal(width); \n}",
                "err": {},
                "isRoot": false,
                "uuid": "fa4f9131-4968-49fc-b554-3d7e4e173e6c",
                "isHook": false,
                "skipped": false
              },
              {
                "title": "should set all nodes' walkable attribute",
                "fullTitle": "Grid generate without matrix should set all nodes' walkable attribute",
                "timedOut": false,
                "duration": 0,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "for (var i = 0; i < height; ++i) {\n    for (var j = 0; j < width; ++j) {\n        grid.isWalkableAt(j, i).should.be.true;\n    }\n}",
                "err": {},
                "isRoot": false,
                "uuid": "edf940cc-3874-4f4b-bfd5-fcd7e421672b",
                "isHook": false,
                "skipped": false
              }
            ],
            "suites": [],
            "passes": [
              "fa4f9131-4968-49fc-b554-3d7e4e173e6c",
              "edf940cc-3874-4f4b-bfd5-fcd7e421672b"
            ],
            "failures": [],
            "pending": [],
            "skipped": [],
            "duration": 0,
            "root": false,
            "rootEmpty": false,
            "_timeout": 2000
          },
          {
            "uuid": "cb1a939f-71db-41ec-acb1-2c721e88a2c8",
            "title": "generate with matrix",
            "fullFile": "C:\\Users\\Administrator\\Desktop\\PathFinding.js-master\\test\\Grid.js",
            "file": "\\test\\Grid.js",
            "beforeHooks": [
              {
                "title": "\"before each\" hook",
                "fullTitle": "Grid generate with matrix \"before each\" hook",
                "timedOut": false,
                "duration": 0,
                "pass": false,
                "fail": false,
                "pending": false,
                "code": "matrix = [\n    [1, 0, 0, 1],\n    [0, 1, 0, 0],\n    [0, 1, 0, 0],\n    [0, 0, 0, 0],\n    [1, 0, 0, 1],\n];\nheight = matrix.length;\nwidth = matrix[0].length;\ngrid = new Grid(width, height, matrix);",
                "err": {},
                "isRoot": false,
                "uuid": "51094b8e-cdc3-46d3-9a3b-17e6d70c76e1",
                "isHook": true,
                "skipped": false
              }
            ],
            "afterHooks": [],
            "tests": [
              {
                "title": "should have correct size",
                "fullTitle": "Grid generate with matrix should have correct size",
                "timedOut": false,
                "duration": 0,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "grid.width.should.equal(width);\ngrid.height.should.equal(height);\ngrid.nodes.length.should.equal(height);\nfor (var i = 0; i < height; ++i) {\n    grid.nodes[i].length.should.equal(width); \n}",
                "err": {},
                "isRoot": false,
                "uuid": "f5e87b5b-89f3-4c43-8378-27e0a5619b76",
                "isHook": false,
                "skipped": false
              },
              {
                "title": "should initiate all nodes' walkable attribute",
                "fullTitle": "Grid generate with matrix should initiate all nodes' walkable attribute",
                "timedOut": false,
                "duration": 0,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "enumPos(function(x, y, g) {\n    if (matrix[y][x]) {\n        g.isWalkableAt(x, y).should.be.false;\n    } else {\n        g.isWalkableAt(x, y).should.be.true;\n    }\n});",
                "err": {},
                "isRoot": false,
                "uuid": "c551fe42-9e3a-4637-bb4c-73c4936ba514",
                "isHook": false,
                "skipped": false
              },
              {
                "title": "should be able to set nodes' walkable attribute",
                "fullTitle": "Grid generate with matrix should be able to set nodes' walkable attribute",
                "timedOut": false,
                "duration": 1,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "enumPos(function(x, y) {\n    grid.setWalkableAt(x, y, false); \n});\nenumPos(function(x, y) {\n    grid.isWalkableAt(x, y).should.be.false;\n})\nenumPos(function(x, y) {\n    grid.setWalkableAt(x, y, true); \n});\nenumPos(function(x, y) {\n    grid.isWalkableAt(x, y).should.be.true;\n})",
                "err": {},
                "isRoot": false,
                "uuid": "efb37922-ad44-4993-b11d-d5e50ff8f2bc",
                "isHook": false,
                "skipped": false
              },
              {
                "title": "should return correct answer for position validity query",
                "fullTitle": "Grid generate with matrix should return correct answer for position validity query",
                "timedOut": false,
                "duration": 0,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "var asserts = [\n    [0, 0, true],\n    [0, height - 1, true],\n    [width - 1, 0, true],\n    [width - 1, height - 1, true],\n    [-1, -1, false],\n    [0, -1, false],\n    [-1, 0, false],\n    [0, height, false],\n    [width, 0, false],\n    [width, height, false],\n];\nasserts.forEach(function(v, i, a) {\n    grid.isInside(v[0], v[1]).should.equal(v[2]);\n});",
                "err": {},
                "isRoot": false,
                "uuid": "16fc74d5-f4d5-4795-8102-822f45453519",
                "isHook": false,
                "skipped": false
              },
              {
                "title": "should return correct neighbors",
                "fullTitle": "Grid generate with matrix should return correct neighbors",
                "timedOut": false,
                "duration": 1,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "grid.getNeighbors(grid.nodes[1][0], DiagonalMovement.Never).should.eql([ grid.nodes[2][0] ]);\nvar cmp = function(a, b) {\n    return a.x * 100 + a.y - b.x * 100 - b.y;\n};\ngrid.getNeighbors(grid.nodes[0][2], DiagonalMovement.IfAtMostOneObstacle).sort(cmp).should.eql([\n    grid.nodes[0][1], grid.nodes[1][2], grid.nodes[1][3]\n].sort(cmp))",
                "err": {},
                "isRoot": false,
                "uuid": "d02adc6f-76db-4ae9-a0e7-4e9bc7e3aacb",
                "isHook": false,
                "skipped": false
              }
            ],
            "suites": [],
            "passes": [
              "f5e87b5b-89f3-4c43-8378-27e0a5619b76",
              "c551fe42-9e3a-4637-bb4c-73c4936ba514",
              "efb37922-ad44-4993-b11d-d5e50ff8f2bc",
              "16fc74d5-f4d5-4795-8102-822f45453519",
              "d02adc6f-76db-4ae9-a0e7-4e9bc7e3aacb"
            ],
            "failures": [],
            "pending": [],
            "skipped": [],
            "duration": 2,
            "root": false,
            "rootEmpty": false,
            "_timeout": 2000
          },
          {
            "uuid": "a9be21ba-f3c7-4025-bdcc-92c1ce29dbb4",
            "title": "generate with matrix and no width or height",
            "fullFile": "C:\\Users\\Administrator\\Desktop\\PathFinding.js-master\\test\\Grid.js",
            "file": "\\test\\Grid.js",
            "beforeHooks": [
              {
                "title": "\"before each\" hook",
                "fullTitle": "Grid generate with matrix and no width or height \"before each\" hook",
                "timedOut": false,
                "duration": 0,
                "pass": false,
                "fail": false,
                "pending": false,
                "code": "matrix = [\n    [1, 0, 0, 1],\n    [0, 1, 0, 0],\n    [0, 1, 0, 0],\n    [0, 0, 0, 0],\n    [1, 0, 0, 1],\n];\ngrid = new Grid(matrix);",
                "err": {},
                "isRoot": false,
                "uuid": "640c6f72-7f68-4f17-b99a-a922abacc8e8",
                "isHook": true,
                "skipped": false
              }
            ],
            "afterHooks": [],
            "tests": [
              {
                "title": "should have correct size",
                "fullTitle": "Grid generate with matrix and no width or height should have correct size",
                "timedOut": false,
                "duration": 0,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "var height = matrix.length;\nvar width = matrix[0].length;\ngrid.width.should.equal(width);\ngrid.height.should.equal(height);\ngrid.nodes.length.should.equal(height);\nfor (var i = 0; i < height; ++i) {\n    grid.nodes[i].length.should.equal(width);\n}",
                "err": {},
                "isRoot": false,
                "uuid": "2eedbc49-708e-44c8-b1fc-afcfb7a9e0b8",
                "isHook": false,
                "skipped": false
              }
            ],
            "suites": [],
            "passes": [
              "2eedbc49-708e-44c8-b1fc-afcfb7a9e0b8"
            ],
            "failures": [],
            "pending": [],
            "skipped": [],
            "duration": 0,
            "root": false,
            "rootEmpty": false,
            "_timeout": 2000
          }
        ],
        "passes": [],
        "failures": [],
        "pending": [],
        "skipped": [],
        "duration": 0,
        "root": false,
        "rootEmpty": false,
        "_timeout": 2000
      },
      {
        "uuid": "7eaf9bde-75e0-4dca-933c-937a2292aea6",
        "title": "AStar",
        "fullFile": "C:\\Users\\Administrator\\Desktop\\PathFinding.js-master\\test\\PathTest.js",
        "file": "\\test\\PathTest.js",
        "beforeHooks": [],
        "afterHooks": [],
        "tests": [
          {
            "title": "should solve maze 1",
            "fullTitle": "AStar should solve maze 1",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "29c2a46b-4cab-4a07-856b-93a017cd0f84",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 2",
            "fullTitle": "AStar should solve maze 2",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "b3a08bbb-0efd-4b50-9dba-c39187789621",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 3",
            "fullTitle": "AStar should solve maze 3",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "331eb905-ed38-4768-93d4-c3b2174a15f2",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 4",
            "fullTitle": "AStar should solve maze 4",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "984929d8-02ba-4db0-81a3-e6c46eef0d81",
            "isHook": false,
            "skipped": false
          }
        ],
        "suites": [],
        "passes": [
          "29c2a46b-4cab-4a07-856b-93a017cd0f84",
          "b3a08bbb-0efd-4b50-9dba-c39187789621",
          "331eb905-ed38-4768-93d4-c3b2174a15f2",
          "984929d8-02ba-4db0-81a3-e6c46eef0d81"
        ],
        "failures": [],
        "pending": [],
        "skipped": [],
        "duration": 0,
        "root": false,
        "rootEmpty": false,
        "_timeout": 2000
      },
      {
        "uuid": "7682f499-03c3-4530-bcbc-afa04ac27ecb",
        "title": "BreadthFirst",
        "fullFile": "C:\\Users\\Administrator\\Desktop\\PathFinding.js-master\\test\\PathTest.js",
        "file": "\\test\\PathTest.js",
        "beforeHooks": [],
        "afterHooks": [],
        "tests": [
          {
            "title": "should solve maze 1",
            "fullTitle": "BreadthFirst should solve maze 1",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "22baf471-4f08-4cb9-aa6c-d6ae480d9fb5",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 2",
            "fullTitle": "BreadthFirst should solve maze 2",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "4fb1edd8-7199-4cac-a75f-6c6231ab3f4d",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 3",
            "fullTitle": "BreadthFirst should solve maze 3",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "7153ee36-bab4-427d-b9f8-6c7af273eccd",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 4",
            "fullTitle": "BreadthFirst should solve maze 4",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "e1796b0f-57c0-431a-8a72-a7e9f80e8932",
            "isHook": false,
            "skipped": false
          }
        ],
        "suites": [],
        "passes": [
          "22baf471-4f08-4cb9-aa6c-d6ae480d9fb5",
          "4fb1edd8-7199-4cac-a75f-6c6231ab3f4d",
          "7153ee36-bab4-427d-b9f8-6c7af273eccd",
          "e1796b0f-57c0-431a-8a72-a7e9f80e8932"
        ],
        "failures": [],
        "pending": [],
        "skipped": [],
        "duration": 0,
        "root": false,
        "rootEmpty": false,
        "_timeout": 2000
      },
      {
        "uuid": "73a23ecb-57c2-4e56-85c2-7d6793a29956",
        "title": "Dijkstra",
        "fullFile": "C:\\Users\\Administrator\\Desktop\\PathFinding.js-master\\test\\PathTest.js",
        "file": "\\test\\PathTest.js",
        "beforeHooks": [],
        "afterHooks": [],
        "tests": [
          {
            "title": "should solve maze 1",
            "fullTitle": "Dijkstra should solve maze 1",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "27d3799f-dc43-45e6-a0fc-2bdc32bb44da",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 2",
            "fullTitle": "Dijkstra should solve maze 2",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "00af45b4-3034-4e07-9605-7ff70f24cc5b",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 3",
            "fullTitle": "Dijkstra should solve maze 3",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "a0ffa901-8f42-4443-952a-beb4f4b312ab",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 4",
            "fullTitle": "Dijkstra should solve maze 4",
            "timedOut": false,
            "duration": 1,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "447259c4-a074-448e-842f-97916e06017e",
            "isHook": false,
            "skipped": false
          }
        ],
        "suites": [],
        "passes": [
          "27d3799f-dc43-45e6-a0fc-2bdc32bb44da",
          "00af45b4-3034-4e07-9605-7ff70f24cc5b",
          "a0ffa901-8f42-4443-952a-beb4f4b312ab",
          "447259c4-a074-448e-842f-97916e06017e"
        ],
        "failures": [],
        "pending": [],
        "skipped": [],
        "duration": 1,
        "root": false,
        "rootEmpty": false,
        "_timeout": 2000
      },
      {
        "uuid": "4ee4aa52-c4ca-4710-b3df-76c34a7bfabb",
        "title": "BiBreadthFirst",
        "fullFile": "C:\\Users\\Administrator\\Desktop\\PathFinding.js-master\\test\\PathTest.js",
        "file": "\\test\\PathTest.js",
        "beforeHooks": [],
        "afterHooks": [],
        "tests": [
          {
            "title": "should solve maze 1",
            "fullTitle": "BiBreadthFirst should solve maze 1",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "cf92e4e3-dee0-47b0-8574-1dc05db25583",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 2",
            "fullTitle": "BiBreadthFirst should solve maze 2",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "de2ec2e4-e30e-4131-b8dc-e6cdc8cdb050",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 3",
            "fullTitle": "BiBreadthFirst should solve maze 3",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "fb7ecfe8-46fb-461e-b838-442ebbb059f4",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 4",
            "fullTitle": "BiBreadthFirst should solve maze 4",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "107b4387-9d11-484d-9725-51ad7936702e",
            "isHook": false,
            "skipped": false
          }
        ],
        "suites": [],
        "passes": [
          "cf92e4e3-dee0-47b0-8574-1dc05db25583",
          "de2ec2e4-e30e-4131-b8dc-e6cdc8cdb050",
          "fb7ecfe8-46fb-461e-b838-442ebbb059f4",
          "107b4387-9d11-484d-9725-51ad7936702e"
        ],
        "failures": [],
        "pending": [],
        "skipped": [],
        "duration": 0,
        "root": false,
        "rootEmpty": false,
        "_timeout": 2000
      },
      {
        "uuid": "29cdd41d-0e7f-402f-af40-67eb3799785c",
        "title": "BiDijkstra",
        "fullFile": "C:\\Users\\Administrator\\Desktop\\PathFinding.js-master\\test\\PathTest.js",
        "file": "\\test\\PathTest.js",
        "beforeHooks": [],
        "afterHooks": [],
        "tests": [
          {
            "title": "should solve maze 1",
            "fullTitle": "BiDijkstra should solve maze 1",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "a66f2ed4-af7c-49f2-a9e5-68707be1365a",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 2",
            "fullTitle": "BiDijkstra should solve maze 2",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "6ba45b8c-eb6f-4c88-bdbc-60d8963446cd",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 3",
            "fullTitle": "BiDijkstra should solve maze 3",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "d3d39ffd-b1bb-4597-8d2a-88b38b62b87e",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 4",
            "fullTitle": "BiDijkstra should solve maze 4",
            "timedOut": false,
            "duration": 1,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "6a3a0d96-da44-49a3-80d0-e0a70e80f9b2",
            "isHook": false,
            "skipped": false
          }
        ],
        "suites": [],
        "passes": [
          "a66f2ed4-af7c-49f2-a9e5-68707be1365a",
          "6ba45b8c-eb6f-4c88-bdbc-60d8963446cd",
          "d3d39ffd-b1bb-4597-8d2a-88b38b62b87e",
          "6a3a0d96-da44-49a3-80d0-e0a70e80f9b2"
        ],
        "failures": [],
        "pending": [],
        "skipped": [],
        "duration": 1,
        "root": false,
        "rootEmpty": false,
        "_timeout": 2000
      },
      {
        "uuid": "d4a7508a-5e60-419c-91b1-dff11173f24b",
        "title": "BiAStar",
        "fullFile": "C:\\Users\\Administrator\\Desktop\\PathFinding.js-master\\test\\PathTest.js",
        "file": "\\test\\PathTest.js",
        "beforeHooks": [],
        "afterHooks": [],
        "tests": [
          {
            "title": "should solve maze 1",
            "fullTitle": "BiAStar should solve maze 1",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "faa5f31c-2d10-44e3-bb9f-7a8b6eed805c",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 2",
            "fullTitle": "BiAStar should solve maze 2",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "ca6c91f2-473e-462e-9b18-4fd14f2793aa",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 3",
            "fullTitle": "BiAStar should solve maze 3",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "f3fc494c-7da6-43b5-9e05-6cb8a9a02407",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 4",
            "fullTitle": "BiAStar should solve maze 4",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "cbae4265-9669-4835-8e24-57194f8694f2",
            "isHook": false,
            "skipped": false
          }
        ],
        "suites": [],
        "passes": [
          "faa5f31c-2d10-44e3-bb9f-7a8b6eed805c",
          "ca6c91f2-473e-462e-9b18-4fd14f2793aa",
          "f3fc494c-7da6-43b5-9e05-6cb8a9a02407",
          "cbae4265-9669-4835-8e24-57194f8694f2"
        ],
        "failures": [],
        "pending": [],
        "skipped": [],
        "duration": 0,
        "root": false,
        "rootEmpty": false,
        "_timeout": 2000
      },
      {
        "uuid": "eda27dcd-af58-4ac5-8281-e31aaa2c35ea",
        "title": "BestFirst",
        "fullFile": "C:\\Users\\Administrator\\Desktop\\PathFinding.js-master\\test\\PathTest.js",
        "file": "\\test\\PathTest.js",
        "beforeHooks": [],
        "afterHooks": [],
        "tests": [
          {
            "title": "should solve maze 1",
            "fullTitle": "BestFirst should solve maze 1",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "4bdb889f-e63c-4b45-a460-3d6fe2b80dce",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 2",
            "fullTitle": "BestFirst should solve maze 2",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "9848069c-8d3b-4494-8d93-452625d49142",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 3",
            "fullTitle": "BestFirst should solve maze 3",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "6d22a800-2dbf-40fb-aa2f-a4abccfe161c",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 4",
            "fullTitle": "BestFirst should solve maze 4",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "23564bd0-c55e-4ae9-bbc9-33cdb4728e81",
            "isHook": false,
            "skipped": false
          }
        ],
        "suites": [],
        "passes": [
          "4bdb889f-e63c-4b45-a460-3d6fe2b80dce",
          "9848069c-8d3b-4494-8d93-452625d49142",
          "6d22a800-2dbf-40fb-aa2f-a4abccfe161c",
          "23564bd0-c55e-4ae9-bbc9-33cdb4728e81"
        ],
        "failures": [],
        "pending": [],
        "skipped": [],
        "duration": 0,
        "root": false,
        "rootEmpty": false,
        "_timeout": 2000
      },
      {
        "uuid": "60d04cea-c2af-4460-b9e5-380c73dafe6c",
        "title": "BiBestFirst",
        "fullFile": "C:\\Users\\Administrator\\Desktop\\PathFinding.js-master\\test\\PathTest.js",
        "file": "\\test\\PathTest.js",
        "beforeHooks": [],
        "afterHooks": [],
        "tests": [
          {
            "title": "should solve maze 1",
            "fullTitle": "BiBestFirst should solve maze 1",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "1326359f-bc02-417a-b7e3-51e06ad25dd1",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 2",
            "fullTitle": "BiBestFirst should solve maze 2",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "4b054d06-f701-4ec8-b8df-28ec810e34d3",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 3",
            "fullTitle": "BiBestFirst should solve maze 3",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "664c8b7c-f636-4580-a80d-d0354bcdab8b",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 4",
            "fullTitle": "BiBestFirst should solve maze 4",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "287c2b03-c390-4859-9800-a4c3a1a01185",
            "isHook": false,
            "skipped": false
          }
        ],
        "suites": [],
        "passes": [
          "1326359f-bc02-417a-b7e3-51e06ad25dd1",
          "4b054d06-f701-4ec8-b8df-28ec810e34d3",
          "664c8b7c-f636-4580-a80d-d0354bcdab8b",
          "287c2b03-c390-4859-9800-a4c3a1a01185"
        ],
        "failures": [],
        "pending": [],
        "skipped": [],
        "duration": 0,
        "root": false,
        "rootEmpty": false,
        "_timeout": 2000
      },
      {
        "uuid": "2d1d6a12-172e-4681-961b-75c90e0b6264",
        "title": "IDAStar",
        "fullFile": "C:\\Users\\Administrator\\Desktop\\PathFinding.js-master\\test\\PathTest.js",
        "file": "\\test\\PathTest.js",
        "beforeHooks": [],
        "afterHooks": [],
        "tests": [
          {
            "title": "should solve maze 1",
            "fullTitle": "IDAStar should solve maze 1",
            "timedOut": false,
            "duration": 1,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "e67ffdd8-7e84-43dd-9ed9-a4fbaee50bac",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 2",
            "fullTitle": "IDAStar should solve maze 2",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "4343f59d-e572-42fb-b943-4a6751a2f2a4",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 3",
            "fullTitle": "IDAStar should solve maze 3",
            "timedOut": false,
            "duration": 1,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "29d2dc2d-f472-474c-81e9-c949df1eee56",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 4",
            "fullTitle": "IDAStar should solve maze 4",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "ff2c6987-bcd6-40ea-898a-dd6cd45c495d",
            "isHook": false,
            "skipped": false
          }
        ],
        "suites": [],
        "passes": [
          "e67ffdd8-7e84-43dd-9ed9-a4fbaee50bac",
          "4343f59d-e572-42fb-b943-4a6751a2f2a4",
          "29d2dc2d-f472-474c-81e9-c949df1eee56",
          "ff2c6987-bcd6-40ea-898a-dd6cd45c495d"
        ],
        "failures": [],
        "pending": [],
        "skipped": [],
        "duration": 2,
        "root": false,
        "rootEmpty": false,
        "_timeout": 2000
      },
      {
        "uuid": "a06a9faa-4b6e-4060-8618-f150164593c5",
        "title": "JPFMoveDiagonallyIfAtMostOneObstacle",
        "fullFile": "C:\\Users\\Administrator\\Desktop\\PathFinding.js-master\\test\\PathTest.js",
        "file": "\\test\\PathTest.js",
        "beforeHooks": [],
        "afterHooks": [],
        "tests": [
          {
            "title": "should solve maze 1",
            "fullTitle": "JPFMoveDiagonallyIfAtMostOneObstacle should solve maze 1",
            "timedOut": false,
            "duration": 1,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "bbedd7e3-e52c-4ad0-b813-1b5bba9ad156",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 2",
            "fullTitle": "JPFMoveDiagonallyIfAtMostOneObstacle should solve maze 2",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "6f0e93fb-7a60-4819-8a94-1f4e520fb650",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 3",
            "fullTitle": "JPFMoveDiagonallyIfAtMostOneObstacle should solve maze 3",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "263542e6-c92a-407a-97c0-6fdb69613079",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 4",
            "fullTitle": "JPFMoveDiagonallyIfAtMostOneObstacle should solve maze 4",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "20725eb9-a96a-4527-b9da-2cc14f1d364c",
            "isHook": false,
            "skipped": false
          }
        ],
        "suites": [],
        "passes": [
          "bbedd7e3-e52c-4ad0-b813-1b5bba9ad156",
          "6f0e93fb-7a60-4819-8a94-1f4e520fb650",
          "263542e6-c92a-407a-97c0-6fdb69613079",
          "20725eb9-a96a-4527-b9da-2cc14f1d364c"
        ],
        "failures": [],
        "pending": [],
        "skipped": [],
        "duration": 1,
        "root": false,
        "rootEmpty": false,
        "_timeout": 2000
      },
      {
        "uuid": "b433d3a1-a0cb-4106-a933-c89ff7bdfc85",
        "title": "JPFNeverMoveDiagonally",
        "fullFile": "C:\\Users\\Administrator\\Desktop\\PathFinding.js-master\\test\\PathTest.js",
        "file": "\\test\\PathTest.js",
        "beforeHooks": [],
        "afterHooks": [],
        "tests": [
          {
            "title": "should solve maze 1",
            "fullTitle": "JPFNeverMoveDiagonally should solve maze 1",
            "timedOut": false,
            "duration": 1,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "eb33a745-5d4d-4148-848d-945ff328612b",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 2",
            "fullTitle": "JPFNeverMoveDiagonally should solve maze 2",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "a8865c4f-0a5a-4a2d-ada7-2a86937e2f8d",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 3",
            "fullTitle": "JPFNeverMoveDiagonally should solve maze 3",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "07b42a31-15c8-406f-b4bf-e1b378990fa0",
            "isHook": false,
            "skipped": false
          },
          {
            "title": "should solve maze 4",
            "fullTitle": "JPFNeverMoveDiagonally should solve maze 4",
            "timedOut": false,
            "duration": 0,
            "state": "passed",
            "speed": "fast",
            "pass": true,
            "fail": false,
            "pending": false,
            "code": "path = finder.findPath(startX, startY, endX, endY, grid);\nif (optimal) {\n    path.length.should.equal(expectedLength);\n} else {\n    path[0].should.eql([startX, startY]);\n    path[path.length - 1].should.eql([endX, endY]);\n}",
            "err": {},
            "isRoot": false,
            "uuid": "1455590e-18f0-416c-a8c4-8973a4513991",
            "isHook": false,
            "skipped": false
          }
        ],
        "suites": [],
        "passes": [
          "eb33a745-5d4d-4148-848d-945ff328612b",
          "a8865c4f-0a5a-4a2d-ada7-2a86937e2f8d",
          "07b42a31-15c8-406f-b4bf-e1b378990fa0",
          "1455590e-18f0-416c-a8c4-8973a4513991"
        ],
        "failures": [],
        "pending": [],
        "skipped": [],
        "duration": 1,
        "root": false,
        "rootEmpty": false,
        "_timeout": 2000
      },
      {
        "uuid": "e3a38cdc-a582-4b00-941e-a5a1de3c7e61",
        "title": "Utility functions",
        "fullFile": "C:\\Users\\Administrator\\Desktop\\PathFinding.js-master\\test\\Util.js",
        "file": "\\test\\Util.js",
        "beforeHooks": [],
        "afterHooks": [],
        "tests": [],
        "suites": [
          {
            "uuid": "ebd0f0dc-4262-4bbe-bf00-43d9ad3b9bfe",
            "title": "interpolate",
            "fullFile": "C:\\Users\\Administrator\\Desktop\\PathFinding.js-master\\test\\Util.js",
            "file": "\\test\\Util.js",
            "beforeHooks": [],
            "afterHooks": [],
            "tests": [
              {
                "title": "should return the interpolated path",
                "fullTitle": "Utility functions interpolate should return the interpolated path",
                "timedOut": false,
                "duration": 0,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "pfg.Util.interpolate(0, 1, 0, 4).should.eql([\n    [0, 1], [0, 2], [0, 3], [0, 4]\n]);",
                "err": {},
                "isRoot": false,
                "uuid": "f95ea21d-5d56-4fac-93b7-4a434a0b591d",
                "isHook": false,
                "skipped": false
              }
            ],
            "suites": [],
            "passes": [
              "f95ea21d-5d56-4fac-93b7-4a434a0b591d"
            ],
            "failures": [],
            "pending": [],
            "skipped": [],
            "duration": 0,
            "root": false,
            "rootEmpty": false,
            "_timeout": 2000
          },
          {
            "uuid": "f0713c8d-748b-4416-acd6-defe3c654f50",
            "title": "expandPath",
            "fullFile": "C:\\Users\\Administrator\\Desktop\\PathFinding.js-master\\test\\Util.js",
            "file": "\\test\\Util.js",
            "beforeHooks": [],
            "afterHooks": [],
            "tests": [
              {
                "title": "should return an empty array given an empty array",
                "fullTitle": "Utility functions expandPath should return an empty array given an empty array",
                "timedOut": false,
                "duration": 0,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "pfg.Util.expandPath([]).should.eql([]);",
                "err": {},
                "isRoot": false,
                "uuid": "100dd7be-fd1f-4f8f-b161-a8e7f3a74910",
                "isHook": false,
                "skipped": false
              },
              {
                "title": "should return the expanded path",
                "fullTitle": "Utility functions expandPath should return the expanded path",
                "timedOut": false,
                "duration": 0,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "pfg.Util.expandPath([\n    [0, 1], [0, 4]\n]).should.eql([\n    [0, 1], [0, 2], [0, 3], [0, 4]\n]);\nPF.Util.expandPath([\n    [0, 1], [0, 4], [2, 6]\n]).should.eql([\n    [0, 1], [0, 2], [0, 3], [0, 4], [1, 5], [2, 6]\n]);",
                "err": {},
                "isRoot": false,
                "uuid": "65237f2c-06d5-44fd-80eb-67fa42aa2e3c",
                "isHook": false,
                "skipped": false
              }
            ],
            "suites": [],
            "passes": [
              "100dd7be-fd1f-4f8f-b161-a8e7f3a74910",
              "65237f2c-06d5-44fd-80eb-67fa42aa2e3c"
            ],
            "failures": [],
            "pending": [],
            "skipped": [],
            "duration": 0,
            "root": false,
            "rootEmpty": false,
            "_timeout": 2000
          },
          {
            "uuid": "6cd439ed-6ac3-42b8-b239-641c7af890b3",
            "title": "compressPath",
            "fullFile": "C:\\Users\\Administrator\\Desktop\\PathFinding.js-master\\test\\Util.js",
            "file": "\\test\\Util.js",
            "beforeHooks": [],
            "afterHooks": [],
            "tests": [
              {
                "title": "should return the original path if it is too short to compress",
                "fullTitle": "Utility functions compressPath should return the original path if it is too short to compress",
                "timedOut": false,
                "duration": 1,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "pfg.Util.compressPath([]).should.eql([]);",
                "err": {},
                "isRoot": false,
                "uuid": "a63ee58e-2e93-4e60-b9e2-ad9802d3b9ec",
                "isHook": false,
                "skipped": false
              },
              {
                "title": "should return a compressed path",
                "fullTitle": "Utility functions compressPath should return a compressed path",
                "timedOut": false,
                "duration": 0,
                "state": "passed",
                "speed": "fast",
                "pass": true,
                "fail": false,
                "pending": false,
                "code": "pfg.Util.compressPath([\n    [0, 1], [0, 2], [0, 3], [0, 4]\n]).should.eql([\n    [0, 1], [0, 4]\n]);\nPF.Util.compressPath([\n    [0, 1], [0, 2], [0, 3], [0, 4], [1, 5], [2, 6]\n]).should.eql([\n    [0, 1], [0, 4], [2, 6]\n]);",
                "err": {},
                "isRoot": false,
                "uuid": "0b06ff58-9a76-49af-aee9-f5582b7e9145",
                "isHook": false,
                "skipped": false
              }
            ],
            "suites": [],
            "passes": [
              "a63ee58e-2e93-4e60-b9e2-ad9802d3b9ec",
              "0b06ff58-9a76-49af-aee9-f5582b7e9145"
            ],
            "failures": [],
            "pending": [],
            "skipped": [],
            "duration": 1,
            "root": false,
            "rootEmpty": false,
            "_timeout": 2000
          }
        ],
        "passes": [],
        "failures": [],
        "pending": [],
        "skipped": [],
        "duration": 0,
        "root": false,
        "rootEmpty": false,
        "_timeout": 2000
      }
    ],
    "passes": [],
    "failures": [],
    "pending": [],
    "skipped": [],
    "duration": 0,
    "root": true,
    "rootEmpty": true,
    "_timeout": 2000
  },
  "copyrightYear": 2018
}