12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- '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);
- });
|