From 75da7f3fe289fe34a12708e8b0f5a68f2d9f3c09 Mon Sep 17 00:00:00 2001 From: Haydn Ewers <27211+haydn@users.noreply.github.com> Date: Sat, 1 May 2021 11:14:16 +1000 Subject: [PATCH] Treat all non-zero values as edges --- index.ts | 10 ++++------ test.ts | 33 ++++++++++++++++++++++++++++++--- 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/index.ts b/index.ts index 79c3166..84b7019 100644 --- a/index.ts +++ b/index.ts @@ -63,7 +63,7 @@ const edges = (graph: Graph): Array<[string, string]> => { for (let u in graph) { for (let v in graph[u]) { - for (let i = 0; i < graph[u][v]; i++) { + if (graph[u][v] > 0) { result.push([u, v]); } } @@ -154,9 +154,7 @@ const outdegrees = (graph: Graph): { [id: string]: number } => { const removeEdge = (graph: Graph, edge: [string, string]): Graph => { const result = clone(graph); - if (result[edge[0]][edge[1]] > 0) { - result[edge[0]][edge[1]] -= 1; - } + result[edge[0]][edge[1]] = 0; return result; }; @@ -183,8 +181,8 @@ const toD3 = (graph: Graph): D3Graph => { for (let u in graph) { nodes[nodes.length] = { id: u }; for (let v in graph[u]) { - for (let i = 0; i < graph[u][v]; i++) { - links[links.length] = { source: u, target: v }; + if (graph[u][v] > 0) { + links.push({ source: u, target: v }); } } } diff --git a/test.ts b/test.ts index 0dc90ab..c71b24c 100644 --- a/test.ts +++ b/test.ts @@ -84,7 +84,7 @@ test("create", (t) => { }); test("edges", (t) => { - t.plan(1); + t.plan(2); t.deepEqual( edges({ @@ -97,6 +97,19 @@ test("edges", (t) => { ["b", "c"], ], ); + + t.deepEqual( + edges({ + a: { a: 0, b: 2, c: 0 }, + b: { a: 0, b: 0, c: 1 }, + c: { a: 0.5, b: 0, c: 0 }, + }), + [ + ["a", "b"], + ["b", "c"], + ["c", "a"], + ], + ); }); test("fromD3", (t) => { @@ -214,7 +227,7 @@ test("outdegrees", (t) => { }); test("removeEdge", (t) => { - t.plan(1); + t.plan(2); t.deepEqual( removeEdge( @@ -231,6 +244,20 @@ test("removeEdge", (t) => { c: { a: 1, b: 0, c: 0 }, }, ); + + t.deepEqual( + removeEdge( + { + a: { a: 0, b: 2 }, + b: { a: 0, b: 0 }, + }, + ["a", "b"], + ), + { + a: { a: 0, b: 0 }, + b: { a: 0, b: 0 }, + }, + ); }); test("removeVertex", (t) => { @@ -256,7 +283,7 @@ test("toD3", (t) => { t.plan(1); t.deepEqual( toD3({ - a: { a: 1, b: 1, c: 1 }, + a: { a: 1, b: 2, c: 1 }, b: { a: 0, b: 0, c: 0 }, c: { a: 0, b: 0, c: 0 }, }), -- 2.51.2