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