18 lines
1.0 KiB
TypeScript
18 lines
1.0 KiB
TypeScript
import assert from "node:assert/strict"
|
|
import { test } from "node:test"
|
|
import { buildOspfCostIndex, ospfCostKey } from "./ospf-cost"
|
|
const iface = { serverId: 1, interface: "ether1", areaId: "0.0.0.0", cost: 7 }
|
|
test("neighbor cost is scoped to device, interface and area", () => {
|
|
const index = buildOspfCostIndex([iface, { ...iface, areaId: "0.0.0.1", cost: 42 }, { ...iface, serverId: 2, cost: 9 }])
|
|
assert.equal(index.get(ospfCostKey(1,"ether1","0.0.0.0")), 7)
|
|
assert.equal(index.get(ospfCostKey(1,"ether1","0.0.0.1")), 42)
|
|
assert.equal(index.get(ospfCostKey(2,"ether1","0.0.0.0")), 9)
|
|
assert.equal(index.get(ospfCostKey(3,"ether1","0.0.0.0")), undefined)
|
|
})
|
|
test("conflicting or invalid template costs do not choose a fabricated value", () => {
|
|
const key = ospfCostKey(1,"ether1","0.0.0.0")
|
|
assert.equal(buildOspfCostIndex([iface, iface]).get(key), 7)
|
|
assert.equal(buildOspfCostIndex([iface, { ...iface, cost: 42 }, iface]).get(key), null)
|
|
for (const cost of [0, -1, 65536, 1.5]) assert.equal(buildOspfCostIndex([{ ...iface, cost }]).get(key), null)
|
|
})
|