import assert from 'assert'; import * as P from '../src/internal/core'; describe('core', () => { describe('difference', () => { test('basic', () => { const parser = P.difference(P.regexp(/\p{Letter}/u), P.str('x')); let result = parser.handler('x',0,{}) as P.Success; assert.deepStrictEqual(result,P.failure()); result = parser.handler('a',0,{}) as P.Success; assert.deepStrictEqual(result,P.success(1,'a')); }); test('horizontal whitespace', () => { const parser = P.difference(P.regexp(/\s/u), P.newline); let result = parser.handler('\n',0,{}) as P.Success; assert.deepStrictEqual(result,P.failure()); result = parser.handler(' ',0,{}) as P.Success; assert.deepStrictEqual(result,P.success(1,' ')); result = parser.handler('\t',0,{}) as P.Success; assert.deepStrictEqual(result,P.success(1,'\t')); }); }); });