|
|
- import { expect } from "chai"
-
- import { colorGreedy, createGraph, neighbors, vertices } from "../../lib/data/graph"
-
- const g = createGraph((v, e) => {
- v("a", true)
- v("b", true)
- v("c", true)
- v("d", true)
-
- e("a", "b")
- e("a", "c")
- })
-
- const empty = createGraph((v, e) => { })
-
- describe("graph", () => {
- describe("neighbors", () => {
- it("returns neighbors of vertex", () => {
- const ns = neighbors(g, "a")
- expect(ns).to.deep.equal(new Set(["b", "c"]))
- })
-
- it("returns empty set when vertex has no neighbors", () => {
- const ns = neighbors(g, "d")
- expect(ns).to.deep.equal(new Set())
- })
-
- it("throw on invalid vertex", () => {
- expect(() => neighbors(empty, "x")).to.throw()
- })
- })
-
- describe("vertices", () => {
- it("return all vertices for a graph", () => {
- const vs = vertices(g)
- expect(vs).to.deep.equal(new Set(["a", "b", "c", "d"]))
- })
- })
-
- describe("colorGreedy", () => {
- it("colors graph", () => {
- const g = createGraph((v, e) => {
- [0, 1, 2, 3, 4].forEach(i => v("x" + i, true))
-
- e("x0", "x1")
- e("x1", "x2")
- e("x2", "x3")
- })
-
- const coloring1 = colorGreedy(g, ["x0", "x1", "x2", "x3", "x4"])
- expect(coloring1.numColors).to.equal(2)
-
- const coloring2 = colorGreedy(g, ["x0", "x3", "x1", "x2", "x4"])
- expect(coloring2.numColors).to.equal(3)
- })
- })
- })
|