dashersupply/test/tree.test.ts

83 lines
5.1 KiB
TypeScript

import { assert, expect, test } from 'vitest';
import { TreeNode } from '../src/types/tree';
test('Tree of numbers', () => {
const VALUE_NOT_UNDER_TEST = -1000;
const TEST_VALUE_1 = 1;
const TEST_VALUE_10 = 10;
const TEST_VALUE_100 = 100;
const ZERO_CHILDREN = 0;
const ONE_CHILD = 1;
const TWO_CHILDREN = 2;
const THREE_CHILDREN = 3;
let fluentNode = TreeNode.createRoot(TEST_VALUE_1);
expect(fluentNode.value).toBe(TEST_VALUE_1);
expect(fluentNode.children.length).toBe(ZERO_CHILDREN);
fluentNode = fluentNode.addChild(TEST_VALUE_10);
expect(fluentNode.value).toBe(TEST_VALUE_10);
expect(fluentNode.parent().value).toBe(TEST_VALUE_1);
expect(fluentNode.children.length).toBe(ZERO_CHILDREN);
expect(fluentNode.parent().children.length).toBe(ONE_CHILD);
fluentNode = fluentNode.addChild(TEST_VALUE_100);
expect(fluentNode.value).toBe(TEST_VALUE_100);
expect(fluentNode.parent().value).toBe(TEST_VALUE_10);
expect(fluentNode.parent().parent().value).toBe(TEST_VALUE_1);
expect(fluentNode.parent().parent()).toBe(fluentNode.root());
expect(fluentNode.parent().parent().parent().parent().parent().parent().value).toBe(TEST_VALUE_1);
expect(fluentNode.root().value).toBe(TEST_VALUE_1);
expect(fluentNode.root().root().root().root().root().root().root().value).toBe(TEST_VALUE_1);
fluentNode = fluentNode.root();
expect(fluentNode.value).toBe(TEST_VALUE_1);
expect(fluentNode.children.length).toBe(ONE_CHILD);
expect(fluentNode.children[0].children.length).toBe(ONE_CHILD);
expect(fluentNode.children[0].children[0].children.length).toBe(ZERO_CHILDREN);
expect(fluentNode.is(value => value === TEST_VALUE_1)).toBe(true);
expect(fluentNode.is(value => value === TEST_VALUE_10)).toBe(false);
expect(fluentNode.is(value => value === TEST_VALUE_100)).toBe(false);
expect(fluentNode.is(value => value === VALUE_NOT_UNDER_TEST)).toBe(false);
expect(fluentNode.findOne(value => value === TEST_VALUE_1)?.value).toBe(TEST_VALUE_1);
expect(fluentNode.findOne(value => value === TEST_VALUE_10)?.value).toBe(TEST_VALUE_10);
expect(fluentNode.findOne(value => value === TEST_VALUE_100)?.value).toBe(undefined);
expect(fluentNode.findOne(value => value === TEST_VALUE_1)?.value).toBe(TEST_VALUE_1);
expect(fluentNode.findOne(value => value === VALUE_NOT_UNDER_TEST)).toBe(undefined);
expect(fluentNode.findOneRecursive(value => value === TEST_VALUE_1)?.value).toBe(TEST_VALUE_1);
expect(fluentNode.findOneRecursive(value => value === TEST_VALUE_10)?.value).toBe(TEST_VALUE_10);
expect(fluentNode.findOneRecursive(value => value === TEST_VALUE_100)?.value).toBe(TEST_VALUE_100);
expect(fluentNode.findOneRecursive(value => value === VALUE_NOT_UNDER_TEST)).toBe(undefined);
expect(fluentNode.findAll(value => value === TEST_VALUE_1).length).toBe(ONE_CHILD);
expect(fluentNode.findAll(value => value === TEST_VALUE_1)[0].value).toBe(TEST_VALUE_1);
expect(fluentNode.findAll(value => value === TEST_VALUE_10).length).toBe(ONE_CHILD);
expect(fluentNode.findAll(value => value === TEST_VALUE_10)[0].value).toBe(TEST_VALUE_10);
expect(fluentNode.findAll(value => value === TEST_VALUE_100).length).toBe(ZERO_CHILDREN);
expect(fluentNode.findAll(value => value === VALUE_NOT_UNDER_TEST).length).toBe(ZERO_CHILDREN);
expect(fluentNode.findAll(value => value >= TEST_VALUE_1).length).toBe(TWO_CHILDREN);
expect(fluentNode.findAll(value => value >= TEST_VALUE_1)[0].value).toBe(TEST_VALUE_1);
expect(fluentNode.findAll(value => value >= TEST_VALUE_1)[1].value).toBe(TEST_VALUE_10);
expect(fluentNode.findAll(value => value >= TEST_VALUE_10).length).toBe(ONE_CHILD);
expect(fluentNode.findAll(value => value >= TEST_VALUE_10)[0].value).toBe(TEST_VALUE_10);
expect(fluentNode.findAllRecursive(value => value === TEST_VALUE_1).length).toBe(ONE_CHILD);
expect(fluentNode.findAllRecursive(value => value === TEST_VALUE_1)[0].value).toBe(TEST_VALUE_1);
expect(fluentNode.findAllRecursive(value => value === TEST_VALUE_10).length).toBe(ONE_CHILD);
expect(fluentNode.findAllRecursive(value => value === TEST_VALUE_10)[0].value).toBe(TEST_VALUE_10);
expect(fluentNode.findAllRecursive(value => value === TEST_VALUE_100).length).toBe(ONE_CHILD);
expect(fluentNode.findAllRecursive(value => value === TEST_VALUE_100)[0].value).toBe(TEST_VALUE_100);
expect(fluentNode.findAllRecursive(value => value === VALUE_NOT_UNDER_TEST).length).toBe(ZERO_CHILDREN);
expect(fluentNode.findAllRecursive(value => value >= TEST_VALUE_1).length).toBe(THREE_CHILDREN);
expect(fluentNode.findAllRecursive(value => value >= TEST_VALUE_1)[0].value).toBe(TEST_VALUE_1);
expect(fluentNode.findAllRecursive(value => value >= TEST_VALUE_1)[1].value).toBe(TEST_VALUE_10);
expect(fluentNode.findAllRecursive(value => value >= TEST_VALUE_1)[2].value).toBe(TEST_VALUE_100);
expect(fluentNode.getAllNodes().length).toBe(THREE_CHILDREN);
expect(fluentNode.getAllNodes()[0].value).toBe(TEST_VALUE_1);
expect(fluentNode.getAllNodes()[1].value).toBe(TEST_VALUE_10);
expect(fluentNode.getAllNodes()[2].value).toBe(TEST_VALUE_100);
})