test( 'RedBlackTree::has' , t => { for ( const compare of [ increasing , decreasing ] ) { const tree = new RedBlackTree( compare ) ; t.falsy( tree.has( 0 ) ) ; const n = 10000 ; const reference = [ ] ; for ( let i of range( n ) ) { const x = Math.random() ; tree.add( x ) ; reference.push( x ) ; } for ( let x of reference ) { t.truthy( tree.has( x ) ) ; } t.falsy( tree.has( -1 ) ) ; t.falsy( tree.has( n ) ) ; } });
test( 'RedBlackTree::range' , t => { for ( const [ s , compare ] of [ [ 1 , increasing ] , [ -1 , decreasing ] ] ) { const n = 10000 ; const reference = range( n ) ; shuffle( reference , 0 , n ) ; const tree = RedBlackTree.from( compare , reference ) ; const x = ( a , b ) => t.deepEqual( list( tree.range( a , b ) ) , list( range( a , b , s ) ) ) ; x( 0 , n ) ; x( 10 , 20 ) ; x( 20 , 10 ) ; x( 7 , 13 ) ; x( 13 , 7 ) ; x( n - 1 , -1 ) ; x( 10 , 10 ) ; } });
const x = ( a , b ) => t.deepEqual( list( tree.range( a , b ) ) , list( range( a , b , s ) ) ) ;