dns-suite.js/node_modules/qap/test/repetitive-big-pattern-test.js

45 lines
1.4 KiB
JavaScript
Raw Normal View History

2017-01-14 02:04:27 +00:00
var log = console.log
, assert = require( 'assert' )
, Qap = require( '../' )
, spattern = '---------------hellofolks!!!!!!!!!!!!\r\n\r\n\r\n'
, splen = spattern.length
// 2^n times
, n = 8
, tlen = splen * n
, indexes = []
, data = new Buffer( Math.pow( 2, n ) * 1024 * 1024 )
, dlen = data.length
, bpattern = null
, i = 0
, offset = 0
, qap = null
, result = null
;
log( '- create a long pattern with ' + n + ' repetition of itself side by side' );
for ( ; i < n; ++i ) {
spattern += spattern;
};
log( '- resulting pattern length is ' + spattern.length / 1024 + ' KB' );
bpattern = new Buffer( spattern );
log( '- create a test data buffer (' + ( data.length / 1024 / 1024 ) + ' MB) copying ' + n + ' patterns' );
for ( i = 0; i < n; ++i ) {
offset = bpattern.length * Math.pow( 2, 2 * i );
indexes.push( offset );
bpattern.copy( data, offset );
};
log( '- parse data for patterns and get results' );
qap = Qap( bpattern );
results = qap.parse( data );
log( '- check results length, it should be equal to ' + n );
assert.equal( results.length, n, 'results length is wrong, must be ' + n + ', now it\'s ' + results.length );
log( '- compare returned results and pre-recorded indexes, indexes should match' );
assert.deepEqual( results, indexes, 'results don\'t match : ' + indexes + ' !== ' + results );