45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | 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 ); |