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)

147 lines 5.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var calc_1 = require("../calc"); var range_finder_1 = require("./range-finder"); describe("range-finder", function () { it("can create a new RangeFinder", function () { var distanceFunc = function () { return 1.5; }; var rf = new range_finder_1.RangeFinder({ topology: "four", getTerrainCallback: distanceFunc, }); expect(rf).not.toBeUndefined(); expect(rf["getTerrain"]).toBe(distanceFunc); }); it("can get a range of 0", function () { var rf = new range_finder_1.RangeFinder({ topology: "eight", }); var range = rf.compute({ start: { x: 0, y: 0 }, maxRange: 0, }); expect(range).toEqual([{ x: 0, y: 0, r: 0 }]); }); it("can get a range of (1,2) - topology four", function () { var rf = new range_finder_1.RangeFinder({ topology: "four", }); var range = rf.compute({ start: { x: 0, y: 0 }, maxRange: 2, minRange: 1, }); expect(range).toHaveLength(12); expect(range).toEqual([ // gen 1 { x: 1, y: 0, r: 1 }, { x: 0, y: -1, r: 1 }, { x: -1, y: 0, r: 1 }, { x: 0, y: 1, r: 1 }, // gen 2 { x: 2, y: 0, r: 2 }, { x: 1, y: -1, r: 2 }, { x: 1, y: 1, r: 2 }, { x: 0, y: -2, r: 2 }, { x: -1, y: -1, r: 2 }, { x: -2, y: 0, r: 2 }, { x: -1, y: 1, r: 2 }, { x: 0, y: 2, r: 2 }, ]); }); it("can get a range of (1,2) - topology eight", function () { var rf = new range_finder_1.RangeFinder({ topology: "eight", }); var range = rf.compute({ start: { x: 0, y: 0 }, maxRange: 2, minRange: 1, }); expect(range).toHaveLength(24); expect(range).toEqual([ // gen 1 { r: 1, x: 1, y: 0 }, { r: 1, x: 0, y: -1 }, { r: 1, x: -1, y: 0 }, { r: 1, x: 0, y: 1 }, { r: 1, x: 1, y: -1 }, { r: 1, x: -1, y: -1 }, { r: 1, x: -1, y: 1 }, { r: 1, x: 1, y: 1 }, // gen 2 { r: 2, x: 2, y: 0 }, { r: 2, x: 2, y: -1 }, { r: 2, x: 2, y: 1 }, { r: 2, x: 0, y: -2 }, { r: 2, x: 1, y: -2 }, { r: 2, x: -1, y: -2 }, { r: 2, x: -2, y: 0 }, { r: 2, x: -2, y: -1 }, { r: 2, x: -2, y: 1 }, { r: 2, x: 0, y: 2 }, { r: 2, x: -1, y: 2 }, { r: 2, x: 1, y: 2 }, { r: 2, x: 2, y: -2 }, { r: 2, x: -2, y: -2 }, { r: 2, x: -2, y: 2 }, { r: 2, x: 2, y: 2 }, ]); }); it("can work with a distance function - topology four", function () { var wall = { x: 1, y: 0 }; var fs = new range_finder_1.RangeFinder({ topology: "four", getTerrainCallback: function (_, to) { return (calc_1.Vector.areEqual(to, wall) ? 5 : 1); }, }); var range = fs.compute({ start: { x: 0, y: 0 }, maxRange: 4, }); // Don't expect us to use the wall for (var _i = 0, range_1 = range; _i < range_1.length; _i++) { var r = range_1[_i]; expect(calc_1.Vector.areEqual(r, wall)).toBeFalsy(); } // Expect us to have gone around the wall expect(range.some(function (v) { return calc_1.Vector.areEqual(v, { x: 2, y: 0 }); })).toBeTruthy(); }); it("can work with a distance function - topology eight", function () { var wall = { x: 1, y: 0 }; var fs = new range_finder_1.RangeFinder({ topology: "eight", getTerrainCallback: function (_, to) { return (calc_1.Vector.areEqual(to, wall) ? 5 : 1); }, }); var range = fs.compute({ start: { x: 0, y: 0 }, maxRange: 4, }); // Don't expect us to use the wall for (var _i = 0, range_2 = range; _i < range_2.length; _i++) { var r = range_2[_i]; expect(calc_1.Vector.areEqual(r, wall)).toBeFalsy(); } // Expect us to have gone around the wall expect(range.some(function (v) { return calc_1.Vector.areEqual(v, { x: 2, y: 0 }); })).toBeTruthy(); }); it("will change if it found a shorter path", function () { var fs = new range_finder_1.RangeFinder({ topology: "four", getTerrainCallback: function (from, to) { if (calc_1.Vector.areEqual(from, { x: 0, y: -1 })) { return 0.5; } else { return 1; } }, }); var range = fs.compute({ start: { x: 0, y: 0 }, minRange: 0, maxRange: 2, }); expect(range.some(function (rv) { return calc_1.Vector.areEqual(rv, { x: 1, y: -1 }) && rv.r === 1.5; })).toBeTruthy(); }); }); //# sourceMappingURL=range-finder.spec.js.map