dist-javascript-algorithms-and-data-structures
Version:
Algorithms and data-structures implemented on JavaScript
38 lines (32 loc) • 1.63 kB
JavaScript
"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 _detectUndirectedCycle = _interopRequireDefault(require("../detectUndirectedCycle"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
describe('detectUndirectedCycle', () => {
it('should detect undirected cycle', () => {
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 vertexE = new _GraphVertex.default('E');
const vertexF = new _GraphVertex.default('F');
const edgeAF = new _GraphEdge.default(vertexA, vertexF);
const edgeAB = new _GraphEdge.default(vertexA, vertexB);
const edgeBE = new _GraphEdge.default(vertexB, vertexE);
const edgeBC = new _GraphEdge.default(vertexB, vertexC);
const edgeCD = new _GraphEdge.default(vertexC, vertexD);
const edgeDE = new _GraphEdge.default(vertexD, vertexE);
const graph = new _Graph.default();
graph.addEdge(edgeAF).addEdge(edgeAB).addEdge(edgeBE).addEdge(edgeBC).addEdge(edgeCD);
expect((0, _detectUndirectedCycle.default)(graph)).toBeNull();
graph.addEdge(edgeDE);
expect((0, _detectUndirectedCycle.default)(graph)).toEqual({
B: vertexC,
C: vertexD,
D: vertexE,
E: vertexB
});
});
});