UNPKG

@tdurtschi/bug

Version:

Bug is a simulation that models a weevil walking around in an HTML canvas.

68 lines 2.69 kB
"use strict"; 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