import { layout, Tree } from '../src/algorithm' import TreeNode from './tree-node' import Marshall from './marshall' test('layout tree with one node', () => { const tree = new Tree(10, 5, 0, []) layout(tree) expect(tree).toEqual(expect.objectContaining({ x: 0, y: 0 })) }) test('layout tree with 2 nodes', () => { const child = new TreeNode(20, 10) const root = new TreeNode(10, 4) root.addChild(child) const tree = Marshall.convert(root) layout(tree) Marshall.convertBack(tree, root) expect(root).toEqual(expect.objectContaining({ x: 5, y: 0 })) expect(child).toEqual(expect.objectContaining({ x: 0, y: 4 })) }) test('layout tree with 3 nodes', () => { const c1 = new TreeNode(10, 30) const c2 = new TreeNode(20, 10) const root = new TreeNode(40, 10) root.addChild(c1) root.addChild(c2) const tree = Marshall.convert(root) layout(tree) Marshall.convertBack(tree, root) expect(root).toEqual(expect.objectContaining({ x: -5, y: 0 })) expect(c1).toEqual(expect.objectContaining({ x: 0, y: 10 })) expect(c2).toEqual(expect.objectContaining({ x: 10, y: 10 })) }) test('reflection of the tree is the mirror image of the original tree', () => { const n1 = new TreeNode(10, 10) const n2 = new TreeNode(10, 10) const n3 = new TreeNode(10, 10) const n4 = new TreeNode(10, 10) const n5 = new TreeNode(10, 10) const n6 = new TreeNode(10, 20) const n7 = new TreeNode(150, 10) n1.addChild(n2) n1.addChild(n3) n1.addChild(n4) n1.addChild(n5) n1.addChild(n6) n2.addChild(n7) const tree = Marshall.convert(n1) layout(tree) Marshall.convertBack(tree, n1) expect(n1).toEqual(expect.objectContaining({ x: 110, y: 0 })) expect(n2).toEqual(expect.objectContaining({ x: 70, y: 10 })) expect(n3).toEqual(expect.objectContaining({ x: 90, y: 10 })) expect(n4).toEqual(expect.objectContaining({ x: 110, y: 10 })) expect(n5).toEqual(expect.objectContaining({ x: 130, y: 10 })) expect(n6).toEqual(expect.objectContaining({ x: 150, y: 10 })) expect(n7).toEqual(expect.objectContaining({ x: 0, y: 20 })) })