@aureooms/js-merging
Version:
merging code bricks for JavaScript
98 lines (70 loc) • 2.17 kB
JavaScript
var all, util, sort, array, search, random, compare, functools, itertools;
util = require( "util" );
sort = require( "@aureooms/js-sort" );
array = require( "@aureooms/js-array" );
search = require( "@aureooms/js-search" );
random = require( "@aureooms/js-random" );
compare = require( "@aureooms/js-compare" );
functools = require( "@aureooms/js-functools" );
itertools = require( "@aureooms/js-itertools" );
all = function ( comparename, compare, mergename, merge, m, n, type ) {
var title;
title = util.format( "%s (new %s(%d, %d), %s)", mergename, type.name, m, n, comparename );
console.log( title );
test( title, function () {
var a, b, d, j;
a = new type( m );
for ( j = 0 ; j < m ; ++j ) {
a[j] = random.randint( 0, m );
}
array.sort( compare, a );
b = new type(n);
for ( j = 0 ; j < n ; ++j ) {
b[j] = random.randint( 0, n );
}
array.sort( compare, b );
d = new type( n + m );
// MERGE ARRAYS
merge( compare, a, 0, m, b, 0, n, d, 0 );
deepEqual( sort.issorted( compare , d , 0 , n + m ) , n + m , "check sorted" );
deepEqual( a.length, m, "check length a" );
deepEqual( b.length, n, "check length b" );
deepEqual( d.length, n + m, "check length d" );
});
};
itertools.exhaust( itertools.map(
functools.chain( [ itertools.chain , itertools.list , functools.partial( functools.star,
[ function ( comparename, compare, mergename, merge, m, n, type ) {
if ( type.BYTES_PER_ELEMENT && m > Math.pow( 2, type.BYTES_PER_ELEMENT * 8 ) ) {
return;
}
if ( m < n ) {
return;
}
all( comparename, compare, mergename, merge, m, n, type );
} ]
) ] ),
itertools.product([
[
[ "increasing", compare.increasing ],
[ "decreasing", compare.decreasing ]
],
[
[ "merge" , merging._merge( search.binarysearch, array.copy ) ],
[ "static hwang-lin" , merging._hlstatic( search.binarysearch, array.copy ) ],
[ "tapemerge" , merging.tapemerge ]
],
[[0], [1], [2], [10], [63], [64], [65]],
[[0], [1], [2], [10], [63], [64], [65]],
[
[ Array ],
[ Int8Array ],
[ Uint8Array ],
[ Int16Array ],
[ Uint16Array ],
[ Int32Array ],
[ Uint32Array ],
[ Float32Array ],
[ Float64Array ]
]
], 1 ) ) ) ;