83 lines
5.1 KiB
TypeScript
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);
|
|
}) |