UNPKG

dig

Version:

Graph algorithms

45 lines (35 loc) 1.95 kB
require("../../../test-env"); describe("dig.dot.layout.crossCount(graph, ranks)", function() { it("returns 0 for an empty graph", function() { var g = new dig.DiGraph(); assert.equal(0, dig.dot.layout.crossCount(g, [])); }); it("returns 0 for a graph with one layer", function() { var g = dig.dot.read("digraph { A; B; C }"); assert.equal(0, dig.dot.layout.crossCount(g, [["A", "B", "C"]])); }); it("returns 0 for a 2-layer graph with no crossings", function() { var g = dig.dot.read("digraph { A1 -> B1; A2 -> B2; A3 -> B3 }"); assert.equal(0, dig.dot.layout.crossCount(g, [["A1", "A2", "A3"], ["B1", "B2", "B3"]])); }); it("returns 1 for a 2-layer graph with 1 crossing", function() { var g = dig.dot.read("digraph { A1 -> B2; A2 -> B1; A3 -> B3 }"); assert.equal(1, dig.dot.layout.crossCount(g, [["A1", "A2", "A3"], ["B1", "B2", "B3"]])); }); it("handles complicated 2-layer graph crossings", function() { var g = dig.dot.read("digraph { A1 -> B1; A2 -> B2; A2 -> B3; A3 -> B1; A3 -> B4; A3 -> B5; A4 -> B1; A4 -> B3; A5 -> B4; A6 -> B3; A6 -> B5 }"); assert.equal(12, dig.dot.layout.crossCount(g, [["A1", "A2", "A3", "A4", "A5", "A6"], ["B1", "B2", "B3", "B4", "B5"]])); }); it("works for graphs with more than 2 layers", function() { var g = dig.dot.read("digraph { A1 -> B2; A2 -> B1; B1 -> C2; B2 -> C1 }"); assert.equal(2, dig.dot.layout.crossCount(g, [["A1", "A2"], ["B1", "B2"], ["C1", "C2"]])); }); it("works for graphs with back edges", function() { var g = dig.dot.read("digraph { A1 -> B2; B1 -> A2 }"); assert.equal(1, dig.dot.layout.crossCount(g, [["A1", "A2"], ["B1", "B2"]])); }); it("handles back edges on graphs with more than 2 layers", function() { var g = dig.dot.read("digraph { A1 -> B2; B1 -> A2; B2 -> C1; C2 -> B1 }"); assert.equal(2, dig.dot.layout.crossCount(g, [["A1", "A2"], ["B1", "B2"], ["C1", "C2"]])); }); });