71 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			71 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | 'use strict'; | ||
|  | 
 | ||
|  | const assert = require('assert'); | ||
|  | 
 | ||
|  | const StreamSearch = require('../lib/sbmh.js'); | ||
|  | 
 | ||
|  | [ | ||
|  |   { | ||
|  |     needle: '\r\n', | ||
|  |     chunks: [ | ||
|  |       'foo', | ||
|  |       ' bar', | ||
|  |       '\r', | ||
|  |       '\n', | ||
|  |       'baz, hello\r', | ||
|  |       '\n world.', | ||
|  |       '\r\n Node.JS rules!!\r\n\r\n', | ||
|  |     ], | ||
|  |     expect: [ | ||
|  |       [false, 'foo'], | ||
|  |       [false, ' bar'], | ||
|  |       [ true, null], | ||
|  |       [false, 'baz, hello'], | ||
|  |       [ true, null], | ||
|  |       [false, ' world.'], | ||
|  |       [ true, null], | ||
|  |       [ true, ' Node.JS rules!!'], | ||
|  |       [ true, ''], | ||
|  |     ], | ||
|  |   }, | ||
|  |   { | ||
|  |     needle: '---foobarbaz', | ||
|  |     chunks: [ | ||
|  |       '---foobarbaz', | ||
|  |       'asdf', | ||
|  |       '\r\n', | ||
|  |       '---foobarba', | ||
|  |       '---foobar', | ||
|  |       'ba', | ||
|  |       '\r\n---foobarbaz--\r\n', | ||
|  |     ], | ||
|  |     expect: [ | ||
|  |       [ true, null], | ||
|  |       [false, 'asdf'], | ||
|  |       [false, '\r\n'], | ||
|  |       [false, '---foobarba'], | ||
|  |       [false, '---foobarba'], | ||
|  |       [ true, '\r\n'], | ||
|  |       [false, '--\r\n'], | ||
|  |     ], | ||
|  |   }, | ||
|  | ].forEach((test, i) => { | ||
|  |   console.log(`Running test #${i + 1}`); | ||
|  |   const { needle, chunks, expect } = test; | ||
|  | 
 | ||
|  |   const results = []; | ||
|  |   const ss = new StreamSearch(Buffer.from(needle), | ||
|  |                               (isMatch, data, start, end) => { | ||
|  |     if (data) | ||
|  |       data = data.toString('latin1', start, end); | ||
|  |     else | ||
|  |       data = null; | ||
|  |     results.push([isMatch, data]); | ||
|  |   }); | ||
|  | 
 | ||
|  |   for (const chunk of chunks) | ||
|  |     ss.push(Buffer.from(chunk)); | ||
|  | 
 | ||
|  |   assert.deepStrictEqual(results, expect); | ||
|  | }); |