@tdurtschi/bug
Version:
Bug is a simulation that models a weevil walking around in an HTML canvas.
68 lines • 2.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var treeStruct_1 = require("./treeStruct");
describe('TreeStruct', function () {
it("Starts as a single node", function () {
var tree = new treeStruct_1.TreeStruct();
expect(tree.left).toBeNull();
expect(tree.right).toBeNull();
expect(tree.node.x).toEqual(0);
expect(tree.node.y).toEqual(1);
});
it("The root node grows upward", function () {
var tree = new treeStruct_1.TreeStruct();
var oldMag = tree.node.magnitude();
tree.update();
expect(tree.node.magnitude()).toBeGreaterThan(oldMag);
});
it("Has a maximum height", function () {
var tree = new treeStruct_1.TreeStruct();
updateALot(tree, 100);
expect(tree.node.magnitude()).toBeLessThan(100);
});
it("Has a maximum depth", function () {
var tree = new treeStruct_1.TreeStruct();
updateALot(tree, 1000);
var maxDepth = function (tree) {
var values = [tree.depth];
if (tree.left)
values.push(maxDepth(tree.left));
if (tree.right)
values.push(maxDepth(tree.right));
return Math.max.apply(Math, values);
};
expect(maxDepth(tree)).toBeLessThan(7);
});
describe("Child nodes", function () {
it("Has a reference to the parent node", function () {
var tree = new treeStruct_1.TreeStruct();
updateALot(tree, 100);
expect(tree.left).toBeTruthy();
expect(tree.left.parent).toBe(tree);
});
it("Get a larger depth than the parent", function () {
var tree = new treeStruct_1.TreeStruct();
updateALot(tree, 100);
expect(tree.depth).toEqual(1);
expect(tree.left.depth).toEqual(2);
expect(tree.right.depth).toEqual(2);
});
it("Grows if it exists.", function () {
var tree = new treeStruct_1.TreeStruct();
tree.left = new treeStruct_1.TreeStruct();
tree.right = new treeStruct_1.TreeStruct();
var leftMag = tree.left.node.magnitude();
var rightMag = tree.left.node.magnitude();
tree.update();
expect(tree.left.node.magnitude()).toBeGreaterThan(leftMag);
expect(tree.right.node.magnitude()).toBeGreaterThan(rightMag);
});
});
var updateALot = function (tree, numTimes) {
if (numTimes === void 0) { numTimes = 100; }
for (var i = 0; i < numTimes; i++) {
tree.update();
}
};
});
//# sourceMappingURL=treeStruct.spec.js.map