UNPKG

jkstra

Version:

Small JavaScript graph routing library

63 lines (53 loc) 2.17 kB
/* eslint-env mocha */ import { assert } from 'chai'; import Graph from '../dist/core/Graph.js'; import DijkstraIterator from '../dist/algos/DijkstraIterator.js'; import { IN } from '../dist/core/constants.js'; describe('DijkstraIterator', function() { let graph, n, e; before(function() { graph = new Graph(); n = []; e = []; n.push(graph.addVertex(0)); n.push(graph.addVertex(1)); n.push(graph.addVertex(2)); n.push(graph.addVertex(3)); n.push(graph.addVertex(4)); n.push(graph.addVertex(5)); e.push(graph.addEdge(n[0], n[1], 7)); // 0 e.push(graph.addEdge(n[0], n[2], 9)); // 1 e.push(graph.addEdge(n[0], n[5], 14));// 2 e.push(graph.addEdge(n[1], n[2], 10));// 3 e.push(graph.addEdge(n[1], n[3], 15));// 4 e.push(graph.addEdge(n[2], n[5], 2)); // 5 e.push(graph.addEdge(n[2], n[3], 12));// 6 e.push(graph.addEdge(n[3], n[4], 6)); // 7 e.push(graph.addEdge(n[5], n[4], 9)); // 8 }); describe('next()', function() { it('visits the nodes from lower to higher cost from the source', function() { const dijkstraIterator = new DijkstraIterator(graph, n[0], { edgeCost: e => e.data }); const traversalOrder = []; let iteratorResult; while(!(iteratorResult = dijkstraIterator.next()).done) { traversalOrder.push(iteratorResult.value.data); } assert.equal(traversalOrder.join(), '0,1,2,5,4,3'); }); it('works in reverse', function() { const dijkstraIterator = new DijkstraIterator(graph, n[4], { edgeCost: e => e.data, direction: IN }); const traversalOrder = []; let iteratorResult; while(!(iteratorResult = dijkstraIterator.next()).done) { traversalOrder.push(iteratorResult.value.data); } assert.equal(traversalOrder.join(), '4,3,5,2,0,1'); }); }); });