UNPKG

graph-builder

Version:

A graph builder library for modeling abstract graph structures.

80 lines 2.45 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const tape_1 = __importDefault(require("tape")); const Traverser_1 = require("./Traverser"); const GraphBuilder_1 = require("./GraphBuilder"); // Graphs /** * test graph (numbered breadth first) * 1 2 * | \ | * 3 4--5 * | * 6 */ const makeGraph = () => { const g = GraphBuilder_1.GraphBuilder.directed().allowsSelfLoops(true).build(); g.putEdge(1, 3); g.putEdge(1, 4); g.putEdge(2, 5); g.putEdge(4, 5); g.putEdge(3, 6); return g; }; tape_1.default('Traverser :: graph :: breadth first', (t) => { const g = makeGraph(); const i = Traverser_1.Traversers.forGraph(g).breadthFirst(1, 2); t.deepEquals(Array.from(i), [1, 2, 3, 4, 5, 6]); t.end(); }); tape_1.default('Traverser :: graph :: depth first preorder', (t) => { const g = makeGraph(); const i = Traverser_1.Traversers.forGraph(g).depthFirstPreOrder(1, 2); t.deepEquals(Array.from(i), [1, 3, 6, 4, 5, 2]); t.end(); }); tape_1.default('Traverser :: graph :: depth first postorder', (t) => { const g = makeGraph(); const i = Traverser_1.Traversers.forGraph(g).depthFirstPostOrder(1, 2); t.deepEquals(Array.from(i), [6, 3, 5, 4, 1, 2]); t.end(); }); // Trees /** * * test tree (numbered in breadth first order) * 1 * | \ * 2 3 * | * 4 */ const makeTree = () => { const tree = GraphBuilder_1.GraphBuilder.directed().allowsSelfLoops(true).build(); tree.putEdge(1, 2); tree.putEdge(1, 3); tree.putEdge(2, 4); return tree; }; tape_1.default('Traverser :: tree :: breadth first', (t) => { const tree = makeTree(); const i = Traverser_1.Traversers.forTree(tree).breadthFirst(1); t.deepEquals(Array.from(i), [1, 2, 3, 4]); t.end(); }); tape_1.default('Traverser :: tree :: depth first preorder', (t) => { const tree = makeTree(); const i = Traverser_1.Traversers.forTree(tree).depthFirstPreOrder(1); t.deepEquals(Array.from(i), [1, 2, 4, 3]); t.end(); }); tape_1.default('Traverser :: tree :: depth first postorder', (t) => { const tree = makeTree(); const i = Traverser_1.Traversers.forTree(tree).depthFirstPostOrder(1); t.deepEquals(Array.from(i), [4, 2, 3, 1]); t.end(); }); //# sourceMappingURL=Traverser.spec.js.map