lychees's picture
Upload 569 files
87b3b3a
describe("Path", function() {
/**
* ........
* A###.###
* ..B#.#X#
* .###.###
* ....Z...
*/
var MAP48 = [ /* transposed */
[0, 0, 0, 0, 0],
[0, 1, 0, 1, 0],
[0, 1, 0, 1, 0],
[0, 1, 1, 1, 0],
[0, 0, 0, 0, 0],
[0, 1, 1, 1, 0],
[0, 1, 0, 1, 0],
[0, 1, 1, 1, 0]
];
var PASSABLE_CALLBACK_48 = function(x, y) {
if (x<0 || y<0 || x>=MAP48.length || y>=MAP48[0].length) { return false; }
return (MAP48[x][y] == 0);
}
var A = [0, 1];
var B = [2, 2];
var Z = [4, 4];
var X = [6, 2];
var PATH = [];
var PATH_CALLBACK = function(x, y) { PATH.push(x, y); }
/*
* . . A # . B
* . # # . .
* . . # . . .
* # . . # .
* X # # # Z .
*/
var MAP6 = [ /* transposed */
[0, null, 0, null, 0],
[null, 0, null, 1, null],
[0, null, 0, null, 1],
[null, 1, null, 0, null],
[0, null, 1, null, 1],
[null, 1, null, 0, null],
[1, null, 0, null, 1],
[null, 0, null, 1, null],
[0, null, 0, null, 0],
[null, 0, null, 0, null],
[0, null, 0, null, 0]
];
var A6 = [4, 0];
var B6 = [10, 0];
var Z6 = [8, 4];
var X6 = [0, 4];
var PASSABLE_CALLBACK_6 = function(x, y) {
if (x<0 || y<0 || x>=MAP6.length || y>=MAP6[0].length) { return false; }
return (MAP6[x][y] == 0);
}
beforeEach(function() {
PATH = [];
});
describe("Dijkstra", function() {
describe("8-topology", function() {
var PATH_A = [0, 1, 0, 2, 0, 3, 1, 4, 2, 4, 3, 4, 4, 4];
var PATH_B = [2, 2, 1, 2, 0, 3, 1, 4, 2, 4, 3, 4, 4, 4];
var dijkstra = new ROT.Path.Dijkstra(Z[0], Z[1], PASSABLE_CALLBACK_48, {topology:8});
it("should compute correct path A", function() {
path = [];
dijkstra.compute(A[0], A[1], PATH_CALLBACK);
expect(PATH.toString()).toEqual(PATH_A.toString());
});
it("should compute correct path B", function() {
dijkstra.compute(B[0], B[1], PATH_CALLBACK);
expect(PATH.toString()).toEqual(PATH_B.toString());
});
it("should survive non-existant path X", function() {
dijkstra.compute(X[0], X[1], PATH_CALLBACK);
expect(PATH.length).toEqual(0);
});
}); /* 8-topology */
describe("4-topology", function() {
var PATH_A = [0, 1, 0, 2, 0, 3, 0, 4, 1, 4, 2, 4, 3, 4, 4, 4];
var PATH_B = [2, 2, 1, 2, 0, 2, 0, 3, 0, 4, 1, 4, 2, 4, 3, 4, 4, 4];
var dijkstra = new ROT.Path.Dijkstra(Z[0], Z[1], PASSABLE_CALLBACK_48, {topology:4});
it("should compute correct path A", function() {
dijkstra.compute(A[0], A[1], PATH_CALLBACK);
expect(PATH.toString()).toEqual(PATH_A.toString());
});
it("should compute correct path B", function() {
dijkstra.compute(B[0], B[1], PATH_CALLBACK);
expect(PATH.toString()).toEqual(PATH_B.toString());
});
it("should survive non-existant path X", function() {
dijkstra.compute(X[0], X[1], PATH_CALLBACK);
expect(PATH.length).toEqual(0);
});
}); /* 4-topology */
describe("6-topology", function() {
var PATH_A = [4, 0, 2, 0, 1, 1, 2, 2, 3, 3, 5, 3, 6, 2, 8, 2, 9, 3, 8, 4];
var PATH_B = [10, 0, 9, 1, 8, 2, 9, 3, 8, 4];
var dijkstra = new ROT.Path.Dijkstra(Z6[0], Z6[1], PASSABLE_CALLBACK_6, {topology:6});
it("should compute correct path A", function() {
dijkstra.compute(A6[0], A6[1], PATH_CALLBACK);
expect(PATH.toString()).toEqual(PATH_A.toString());
});
it("should compute correct path B", function() {
dijkstra.compute(B6[0], B6[1], PATH_CALLBACK);
expect(PATH.toString()).toEqual(PATH_B.toString());
});
it("should survive non-existant path X", function() {
dijkstra.compute(X6[0], X6[1], PATH_CALLBACK);
expect(PATH.length).toEqual(0);
});
}); /* 6-topology */
}); /* dijkstra */
describe("A*", function() {
describe("8-topology", function() {
var PATH_A = [0, 1, 0, 2, 0, 3, 1, 4, 2, 4, 3, 4, 4, 4];
var PATH_B = [2, 2, 1, 2, 0, 3, 1, 4, 2, 4, 3, 4, 4, 4];
var astar = new ROT.Path.AStar(Z[0], Z[1], PASSABLE_CALLBACK_48, {topology:8});
it("should compute correct path A", function() {
path = [];
astar.compute(A[0], A[1], PATH_CALLBACK);
expect(PATH.toString()).toEqual(PATH_A.toString());
});
it("should compute correct path B", function() {
astar.compute(B[0], B[1], PATH_CALLBACK);
expect(PATH.toString()).toEqual(PATH_B.toString());
});
it("should survive non-existant path X", function() {
astar.compute(X[0], X[1], PATH_CALLBACK);
expect(PATH.length).toEqual(0);
});
}); /* 8-topology */
describe("4-topology", function() {
var PATH_A = [0, 1, 0, 2, 0, 3, 0, 4, 1, 4, 2, 4, 3, 4, 4, 4];
var PATH_B = [2, 2, 1, 2, 0, 2, 0, 3, 0, 4, 1, 4, 2, 4, 3, 4, 4, 4];
var astar = new ROT.Path.AStar(Z[0], Z[1], PASSABLE_CALLBACK_48, {topology:4});
it("should compute correct path A", function() {
astar.compute(A[0], A[1], PATH_CALLBACK);
expect(PATH.toString()).toEqual(PATH_A.toString());
});
it("should compute correct path B", function() {
astar.compute(B[0], B[1], PATH_CALLBACK);
expect(PATH.toString()).toEqual(PATH_B.toString());
});
it("should survive non-existant path X", function() {
astar.compute(X[0], X[1], PATH_CALLBACK);
expect(PATH.length).toEqual(0);
});
}); /* 4-topology */
describe("6-topology", function() {
var PATH_A = [4, 0, 2, 0, 1, 1, 2, 2, 3, 3, 5, 3, 6, 2, 8, 2, 9, 3, 8, 4];
var PATH_B = [10, 0, 9, 1, 8, 2, 9, 3, 8, 4];
var astar = new ROT.Path.AStar(Z6[0], Z6[1], PASSABLE_CALLBACK_6, {topology:6});
it("should compute correct path A", function() {
astar.compute(A6[0], A6[1], PATH_CALLBACK);
expect(PATH.toString()).toEqual(PATH_A.toString());
});
it("should compute correct path B", function() {
astar.compute(B6[0], B6[1], PATH_CALLBACK);
expect(PATH.toString()).toEqual(PATH_B.toString());
});
it("should survive non-existant path X", function() {
astar.compute(X6[0], X6[1], PATH_CALLBACK);
expect(PATH.length).toEqual(0);
});
}); /* 6-topology */
}); /* A* */
}); /* path */