UNPKG

dist-javascript-algorithms-and-data-structures

Version:

Algorithms and data-structures implemented on JavaScript

40 lines (34 loc) 2.18 kB
"use strict"; var _GraphVertex = _interopRequireDefault(require("../../../../data-structures/graph/GraphVertex")); var _GraphEdge = _interopRequireDefault(require("../../../../data-structures/graph/GraphEdge")); var _Graph = _interopRequireDefault(require("../../../../data-structures/graph/Graph")); var _bfTravellingSalesman = _interopRequireDefault(require("../bfTravellingSalesman")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } describe('bfTravellingSalesman', () => { it('should solve problem for simple graph', () => { const vertexA = new _GraphVertex.default('A'); const vertexB = new _GraphVertex.default('B'); const vertexC = new _GraphVertex.default('C'); const vertexD = new _GraphVertex.default('D'); const edgeAB = new _GraphEdge.default(vertexA, vertexB, 1); const edgeBD = new _GraphEdge.default(vertexB, vertexD, 1); const edgeDC = new _GraphEdge.default(vertexD, vertexC, 1); const edgeCA = new _GraphEdge.default(vertexC, vertexA, 1); const edgeBA = new _GraphEdge.default(vertexB, vertexA, 5); const edgeDB = new _GraphEdge.default(vertexD, vertexB, 8); const edgeCD = new _GraphEdge.default(vertexC, vertexD, 7); const edgeAC = new _GraphEdge.default(vertexA, vertexC, 4); const edgeAD = new _GraphEdge.default(vertexA, vertexD, 2); const edgeDA = new _GraphEdge.default(vertexD, vertexA, 3); const edgeBC = new _GraphEdge.default(vertexB, vertexC, 3); const edgeCB = new _GraphEdge.default(vertexC, vertexB, 9); const graph = new _Graph.default(true); graph.addEdge(edgeAB).addEdge(edgeBD).addEdge(edgeDC).addEdge(edgeCA).addEdge(edgeBA).addEdge(edgeDB).addEdge(edgeCD).addEdge(edgeAC).addEdge(edgeAD).addEdge(edgeDA).addEdge(edgeBC).addEdge(edgeCB); const salesmanPath = (0, _bfTravellingSalesman.default)(graph); expect(salesmanPath.length).toBe(4); expect(salesmanPath[0].getKey()).toEqual(vertexA.getKey()); expect(salesmanPath[1].getKey()).toEqual(vertexB.getKey()); expect(salesmanPath[2].getKey()).toEqual(vertexD.getKey()); expect(salesmanPath[3].getKey()).toEqual(vertexC.getKey()); }); });