import { assert, expect } from 'chai'; import { describe } from 'mocha'; import { squares } from 'squares-rng'; import { compare } from '../helpers/compare.js'; import { LlRbTree, numberNodeToStr, treeToStr } from '../../src/index.js'; import { isBlackHeightCorrect, isNoRedEdge } from '../helpers/constraints.js'; describe('Full stress test', function() { it('it should pass a full stress test - part 1', function() { const tree = new LlRbTree(compare); const arr: number[] = []; const N = 5_000; for (let i=0; i a - b); expect(treeArr).to.eql(arr); for (let i=0; i val === v); arr.splice(idx,1); } } treeArr = tree.toArrayInOrder(); arr.sort((a,b) => a - b); expect(treeArr).to.eql(arr); expect(treeArr.length).to.eql(3325); }); it('it should pass a full stress test - part 2', function() { const tree = new LlRbTree(compare); const arr: number[] = []; const N = 985; for (let i=0; i a - b); expect(treeArr).to.eql(arr); }); it('it should pass a full stress test - part 3', function() { const tree = new LlRbTree(compare); const arr: number[] = []; const N = 985; for (let i=0; i val === v); if (idx !== -1) { arr.splice(idx,1); } } } // treeToString(tree);//? assert(isBlackHeightCorrect(tree), 'tree does not pass black height constraint'); assert(isNoRedEdge(tree), 'tree does not pass no red edge constraint') let treeArr: number[]; treeArr = tree.toArrayInOrder(); arr.sort((a,b) => a - b); expect(treeArr).to.eql(arr); expect(treeArr.length).to.eql(480); }); it('it should pass a full stress test - part 4', function() { const tree = new LlRbTree(compare, false); const arr: number[] = []; const N = 5_000; for (let i=0; i a - b); expect(treeArr).to.eql(arr); for (let i=0; i val === v); arr.splice(idx,1); } } treeArr = tree.toArrayInOrder(); arr.sort((a,b) => a - b); expect(treeArr).to.eql(arr); expect(treeArr.length).to.eql(3325); }); it('it should pass a full stress test - part 5', function() { const tree = new LlRbTree(compare, false); const N = 985; for (let i=0; i