60 lines
2.0 KiB
TypeScript
60 lines
2.0 KiB
TypeScript
import { TreeNodeFactory } from '../'
|
|
import './TreeNode.findNode'
|
|
import { expect } from 'chai'
|
|
import 'mocha'
|
|
|
|
describe('TreeNode', () => {
|
|
it('firstNode should retrieve first node', () => {
|
|
const topics = 'foo/bar'.split('/')
|
|
const leaf = TreeNodeFactory.fromEdgesAndValue(topics, 3)
|
|
|
|
expect(leaf.firstNode().edges['foo']).to.not.eq(undefined)
|
|
})
|
|
|
|
it('updateWithNode should update value', () => {
|
|
const topics = 'foo/bar'.split('/')
|
|
const leaf = TreeNodeFactory.fromEdgesAndValue(topics, 3)
|
|
expect(leaf.message && leaf.message.value).to.eq(3)
|
|
const updateLeave = TreeNodeFactory.fromEdgesAndValue(topics, 5)
|
|
|
|
let root = leaf.firstNode()
|
|
root.updateWithNode(updateLeave.firstNode())
|
|
|
|
expect(root.sourceEdge).to.eq(undefined)
|
|
expect(leaf.message && leaf.message.value).to.eq(5)
|
|
})
|
|
|
|
it('updateWithNode should update intermediate nodes', () => {
|
|
const topics1 = 'foo/bar/baz'.split('/')
|
|
const leaf = TreeNodeFactory.fromEdgesAndValue(topics1, 3)
|
|
expect(leaf.message && leaf.message.value).to.eq(3)
|
|
|
|
const topics2 = 'foo/bar'.split('/')
|
|
const updateLeave = TreeNodeFactory.fromEdgesAndValue(topics2, 5)
|
|
leaf.firstNode().updateWithNode(updateLeave.firstNode())
|
|
|
|
let barNode = leaf.firstNode().findNode('foo/bar')
|
|
expect(barNode && barNode.sourceEdge && barNode.sourceEdge.name).to.eq('bar')
|
|
expect(barNode && barNode.message && barNode.message.value).to.eq(5)
|
|
|
|
expect(leaf.sourceEdge && leaf.sourceEdge.name).to.eq('baz')
|
|
expect(leaf.message && leaf.message.value).to.eq(3)
|
|
})
|
|
|
|
it('updateWithNode should add nodes to the tree', () => {
|
|
const topics1 = 'foo/bar'.split('/')
|
|
const leaf1 = TreeNodeFactory.fromEdgesAndValue(topics1, 3)
|
|
|
|
const topics2 = 'foo/bar/baz'.split('/')
|
|
const leaf2 = TreeNodeFactory.fromEdgesAndValue(topics2, 5)
|
|
|
|
leaf1.firstNode().updateWithNode(leaf2.firstNode())
|
|
|
|
let expectedNode = leaf1.firstNode().findNode('foo/bar/baz')
|
|
if (!expectedNode) {
|
|
expect.fail('merge seems to have failed')
|
|
return
|
|
}
|
|
})
|
|
});
|