flo-ll-rb-tree
Version:
A simple left leaning red black tree implementation.
59 lines (56 loc) • 2.06 kB
text/typescript
import { assert, expect } from 'chai';
import { describe } from 'mocha';
import { compare } from './helpers/compare.js';
import { LlRbTree } from '../src/index.js';
import { insert1to7 } from './helpers/insert-1-to-7.js';
import { toDatum } from './helpers/to-datum.js';
describe('findBounds', function() {
it('it should find bounds for some items in the tree',
function() {
const tree = new LlRbTree(compare);
{
const bounds = tree.findBounds(4).map(toDatum);
expect(bounds).to.eql([undefined,undefined]);
}
insert1to7(tree);
{
const bounds = tree.findBounds(4).map(toDatum);
expect(bounds).to.eql([4,5]);
}
{
const bounds = tree.findBounds(1).map(toDatum);
expect(bounds).to.eql([1,2]);
}
{
const bounds = tree.findBounds(2.5).map(toDatum);
expect(bounds).to.eql([2,3]);
}
{
tree.remove(7);
// tree.toArrayInOrder(); //=> [1, 2, 3, 4, 5, 6]
const bounds = tree.findBounds(5.99).map(toDatum);
expect(bounds).to.eql([5,6]);
}
{
tree.insert(7);
// tree.toArrayInOrder(); //=> [1, 2, 3, 4, 5, 6, 7]
const bounds = tree.findBounds(6.999).map(toDatum);
expect(bounds).to.eql([6,7]);
}
{
// tree.toArrayInOrder(); //=> [1, 2, 3, 4, 5, 6, 7]
const bounds = tree.findBounds(7).map(toDatum);
expect(bounds).to.eql([7,undefined]);
}
{
// tree.toArrayInOrder(); //=> [1, 2, 3, 4, 5, 6, 7]
const bounds = tree.findBounds(8).map(toDatum);
expect(bounds).to.eql([7,undefined]);
}
{
// tree.toArrayInOrder(); //=> [1, 2, 3, 4, 5, 6, 7]
const bounds = tree.findBounds(0.99).map(toDatum);
expect(bounds).to.eql([undefined,1]);
}
});
});