From e26afa1eb4393ef55863265abcc7d80997a9e264 Mon Sep 17 00:00:00 2001 From: Ladd Hoffman Date: Sun, 29 Jan 2023 12:29:51 -0600 Subject: [PATCH] Add mocha tests and fix forum logic --- forum-network/src/classes/forum.js | 4 +- forum-network/src/classes/scene.js | 3 +- forum-network/src/index.html | 1 + forum-network/src/tests/forum.test.html | 9 ++-- forum-network/src/tests/scripts/forum.test.js | 12 ++--- forum-network/src/tests/scripts/wdag.test.js | 47 +++++++++++++------ forum-network/src/tests/wdag.test.html | 22 ++++++++- 7 files changed, 67 insertions(+), 31 deletions(-) diff --git a/forum-network/src/classes/forum.js b/forum-network/src/classes/forum.js index 1bcbef3..3880421 100644 --- a/forum-network/src/classes/forum.js +++ b/forum-network/src/classes/forum.js @@ -145,8 +145,8 @@ export class Forum extends ReputationHolder { }); if (params.referenceChainLimit === null || depth <= params.referenceChainLimit) { - for (const citationEdge of this.posts.getEdges(CITATION, post)) { - const { to: citedPostVertex, data: { weight } } = citationEdge; + for (const citationEdge of postVertex.getEdges(CITATION, true)) { + const { to: citedPostVertex, weight } = citationEdge; const citedPost = citedPostVertex.data; let outboundAmount = weight * increment; const balance = this.posts.getEdge(BALANCE, postVertex, citedPostVertex)?.data || 0; diff --git a/forum-network/src/classes/scene.js b/forum-network/src/classes/scene.js index 294fa22..498e185 100644 --- a/forum-network/src/classes/scene.js +++ b/forum-network/src/classes/scene.js @@ -127,7 +127,8 @@ export class Scene { withFlowchart({ direction = 'BT' } = {}) { const box = this.topSection.addBox('Flowchart').addClass('padded'); - const logBox = this.topSection.addBox('Flowchart text').addClass('dim'); + this.box.addBox('Spacer').setInnerHTML(' '); + const logBox = this.box.addBox('Flowchart text').addClass('dim'); this.flowchart = new MermaidDiagram(box, logBox); this.flowchart.log(`graph ${direction}`, false); return this; diff --git a/forum-network/src/index.html b/forum-network/src/index.html index a3c3dbe..6bdf9f7 100644 --- a/forum-network/src/index.html +++ b/forum-network/src/index.html @@ -21,5 +21,6 @@
  • WDAG
  • Debounce
  • Flowchart
  • +
  • Mocha
  • diff --git a/forum-network/src/tests/forum.test.html b/forum-network/src/tests/forum.test.html index 7403a5c..b6ba3ae 100644 --- a/forum-network/src/tests/forum.test.html +++ b/forum-network/src/tests/forum.test.html @@ -12,7 +12,8 @@ - + - - diff --git a/forum-network/src/tests/scripts/forum.test.js b/forum-network/src/tests/scripts/forum.test.js index 4dd77c1..0145def 100644 --- a/forum-network/src/tests/scripts/forum.test.js +++ b/forum-network/src/tests/scripts/forum.test.js @@ -10,8 +10,6 @@ import params from '../../params.js'; const DEFAULT_DELAY_MS = 1; const POOL_DURATION_MS = 50; -let rootElement; -let rootBox; let scene; let forum; let bench; @@ -55,11 +53,13 @@ async function addPost(author, fee, citations = []) { } async function setup() { - rootElement = document.getElementById('scene'); - rootBox = new Box('rootBox', rootElement).flex(); + const rootElement = document.getElementById('scene'); + const rootBox = new Box('rootBox', rootElement).flex(); scene = (window.scene = new Scene('Forum test', rootBox)); scene.withSequenceDiagram(); + scene.withFlowchart(); + scene.withTable(); scene.addDisplayValue('c3. stakeForAuthor').set(params.stakeForAuthor); scene.addDisplayValue('q2. revaluationLimit').set(params.revaluationLimit); @@ -74,10 +74,6 @@ async function setup() { experts = (window.experts = []); posts = (window.posts = []); - forum.posts.withFlowchart(); - - scene.withTable(); - await newExpert(); // await newExpert(); // await newExpert(); diff --git a/forum-network/src/tests/scripts/wdag.test.js b/forum-network/src/tests/scripts/wdag.test.js index b0ec472..45c93d2 100644 --- a/forum-network/src/tests/scripts/wdag.test.js +++ b/forum-network/src/tests/scripts/wdag.test.js @@ -5,19 +5,36 @@ import { WDAG } from '../../classes/wdag.js'; const rootElement = document.getElementById('scene'); const rootBox = new Box('rootBox', rootElement).flex(); window.scene = new Scene('WDAG test', rootBox); -const graph = (window.graph = new WDAG(window.scene).withFlowchart()); -const v = (window.v = []); -function addVertex() { - const vertex = graph.addVertex({ seq: window.v.length }); - v.push(vertex); -} -addVertex(); -addVertex(); -addVertex(); -addVertex(); -addVertex(); +describe('Query the graph', () => { + let graph; + before(() => { + graph = (window.graph = new WDAG(window.scene)).withFlowchart(); -graph.addEdge('e1', 0, 1, 1); -graph.addEdge('e1', 2, 1, 0.5); -graph.addEdge('e1', 3, 1, 0.25); -graph.addEdge('e1', 1, 4, 0.125); + graph.addVertex({}); + graph.addVertex({}); + graph.addVertex({}); + graph.addVertex({}); + graph.addVertex({}); + + graph.addEdge('e1', 0, 1, 1); + graph.addEdge('e1', 2, 1, 0.5); + graph.addEdge('e1', 3, 1, 0.25); + graph.addEdge('e1', 1, 4, 0.125); + }); + it('can query for all e1 edges', () => { + const edges = graph.getEdges('e1'); + edges.should.have.length(4); + }); + it('can query for all e1 edges from a particular vertex', () => { + const edges = graph.getEdges('e1', 2); + edges.map(({ from, to, weight }) => [from.id, to.id, weight]).should.have.deep.members([[2, 1, 0.5]]); + }); + it('can query for all e1 edges to a particular vertex', () => { + const edges = graph.getEdges('e1', null, 1); + edges.map(({ from, to, weight }) => [from.id, to.id, weight]).should.have.deep.members([ + [0, 1, 1], + [2, 1, 0.5], + [3, 1, 0.25], + ]); + }); +}); diff --git a/forum-network/src/tests/wdag.test.html b/forum-network/src/tests/wdag.test.html index 0d6f146..5363d90 100644 --- a/forum-network/src/tests/wdag.test.html +++ b/forum-network/src/tests/wdag.test.html @@ -1,9 +1,29 @@ - Forum WDAG + WDAG test + + +
    + + + + + + +