UNPKG

malwoden

Version:

![alt text](./coverage/badge-lines.svg) ![alt text](./coverage/badge-statements.svg) ![alt text](./coverage/badge-functions.svg) ![alt text](./coverage/badge-branches.svg)

172 lines 6.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var Calc = require("../calc"); var dijkstra_1 = require("./dijkstra"); describe("dijkstra", function () { it("recognize as start = end case", function () { var a = new dijkstra_1.Dijkstra({ topology: "four" }); var path = a.compute({ x: 2, y: 3 }, { x: 2, y: 3 }); expect(path).toEqual([{ x: 2, y: 3, r: 0 }]); }); it("recognizes immediate neighbors - 4", function () { var a = new dijkstra_1.Dijkstra({ topology: "four" }); var tests = [ [ { x: 5, y: 5, r: 0 }, { x: 6, y: 5, r: 1 }, ], [ { x: 5, y: 5, r: 0 }, { x: 5, y: 4, r: 1 }, ], [ { x: 5, y: 5, r: 0 }, { x: 4, y: 5, r: 1 }, ], [ { x: 5, y: 5, r: 0 }, { x: 5, y: 6, r: 1 }, ], ]; for (var _i = 0, tests_1 = tests; _i < tests_1.length; _i++) { var _a = tests_1[_i], v1 = _a[0], v2 = _a[1]; var path = a.compute(v1, v2); expect(path).toEqual([v1, v2]); } }); it("recognizes basic paths - 4", function () { var a = new dijkstra_1.Dijkstra({ topology: "four" }); var path = a.compute({ x: 0, y: 0 }, { x: 5, y: 5 }); expect(path).toEqual([ { x: 0, y: 0, r: 0 }, { x: 1, y: 0, r: 1 }, { x: 2, y: 0, r: 2 }, { x: 3, y: 0, r: 3 }, { x: 4, y: 0, r: 4 }, { x: 5, y: 0, r: 5 }, { x: 5, y: 1, r: 6 }, { x: 5, y: 2, r: 7 }, { x: 5, y: 3, r: 8 }, { x: 5, y: 4, r: 9 }, { x: 5, y: 5, r: 10 }, ]); }); it("recognizes basic paths - 8", function () { var a = new dijkstra_1.Dijkstra({ topology: "eight", }); var path = a.compute({ x: 0, y: 0 }, { x: 4, y: 0 }); expect(path).toEqual([ { x: 0, y: 0, r: 0 }, { x: 1, y: 0, r: 1 }, { x: 2, y: 0, r: 2 }, { x: 3, y: 0, r: 3 }, { x: 4, y: 0, r: 4 }, ]); }); it("recognizes blocked paths - 4", function () { var a = new dijkstra_1.Dijkstra({ topology: "four", isBlockedCallback: function (v) { return Calc.Vector.areEqual(v, { x: 1, y: 0 }) || Calc.Vector.areEqual(v, { x: -1, y: 0 }) || Calc.Vector.areEqual(v, { x: 0, y: 1 }) || Calc.Vector.areEqual(v, { x: 0, y: -1 }); }, }); var path = a.compute({ x: 0, y: 0 }, { x: 5, y: 5 }); expect(path).toEqual(undefined); }); it("recognizes blocked paths - 8", function () { var a = new dijkstra_1.Dijkstra({ topology: "eight", isBlockedCallback: function (v) { return Calc.Vector.areEqual(v, { x: 1, y: 0 }) || Calc.Vector.areEqual(v, { x: -1, y: 0 }) || Calc.Vector.areEqual(v, { x: 0, y: 1 }) || Calc.Vector.areEqual(v, { x: 0, y: -1 }) || Calc.Vector.areEqual(v, { x: 1, y: -1 }) || Calc.Vector.areEqual(v, { x: -1, y: -1 }) || Calc.Vector.areEqual(v, { x: -1, y: 1 }) || Calc.Vector.areEqual(v, { x: 1, y: 1 }); }, }); var path = a.compute({ x: 0, y: 0 }, { x: 5, y: 5 }); expect(path).toEqual(undefined); }); it("recognizes basic obstacles - 4", function () { var a = new dijkstra_1.Dijkstra({ topology: "four", isBlockedCallback: function (v) { return Calc.Vector.areEqual(v, { x: 1, y: -1 }) || Calc.Vector.areEqual(v, { x: 1, y: 0 }) || Calc.Vector.areEqual(v, { x: 1, y: 1 }); }, }); var path = a.compute({ x: 0, y: 0 }, { x: 2, y: 0 }); expect(path).toEqual([ { x: 0, y: 0, r: 0 }, { x: 0, y: -1, r: 1 }, { x: 0, y: -2, r: 2 }, { x: 1, y: -2, r: 3 }, { x: 2, y: -2, r: 4 }, { x: 2, y: -1, r: 5 }, { x: 2, y: 0, r: 6 }, ]); }); it("recognizes basic obstacles - 8", function () { var a = new dijkstra_1.Dijkstra({ topology: "eight", isBlockedCallback: function (v) { return Calc.Vector.areEqual(v, { x: 1, y: -1 }) || Calc.Vector.areEqual(v, { x: 1, y: 0 }) || Calc.Vector.areEqual(v, { x: 1, y: 1 }); }, }); var path = a.compute({ x: 0, y: 0 }, { x: 2, y: 0 }); expect(path).toEqual([ { x: 0, y: 0, r: 0 }, { x: 0, y: -1, r: 1 }, { x: 1, y: -2, r: 2 }, { x: 2, y: -1, r: 3 }, { x: 2, y: 0, r: 4 }, ]); }); it("recognizes basic terrain", function () { var a = new dijkstra_1.Dijkstra({ topology: "four", getTerrainCallback: function () { return 0.5; }, }); var path = a.compute({ x: 0, y: 0 }, { x: 5, y: 5 }); expect(path).toEqual([ { x: 0, y: 0, r: 0 }, { x: 1, y: 0, r: 0.5 }, { x: 2, y: 0, r: 1 }, { x: 3, y: 0, r: 1.5 }, { x: 4, y: 0, r: 2 }, { x: 5, y: 0, r: 2.5 }, { x: 5, y: 1, r: 3 }, { x: 5, y: 2, r: 3.5 }, { x: 5, y: 3, r: 4 }, { x: 5, y: 4, r: 4.5 }, { x: 5, y: 5, r: 5 }, ]); }); it("recognizes terrain obstacles", function () { var a = new dijkstra_1.Dijkstra({ topology: "four", getTerrainCallback: function (_, to) { return Calc.Vector.areEqual(to, { x: 1, y: 0 }) ? 2 : 0.5; }, }); var path = a.compute({ x: 0, y: 0 }, { x: 2, y: 0 }); expect(path).toEqual([ { x: 0, y: 0, r: 0 }, { x: 0, y: -1, r: 0.5 }, { x: 1, y: -1, r: 1 }, { x: 2, y: -1, r: 1.5 }, { x: 2, y: 0, r: 2 }, ]); }); }); //# sourceMappingURL=dijkstra.spec.js.map