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 );
 |