From d19a1e4e02c6743f057d03caa9337a5b47bfa9cd Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Sat, 8 Jan 2022 18:37:57 +0530 Subject: feat(eval): implements basic eval filtering --- tests/basic.spec.ts | 85 ---------------------------------------------------- tests/eval.spec.ts | 20 +++++++++++++ tests/parser.spec.ts | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 105 insertions(+), 85 deletions(-) delete mode 100644 tests/basic.spec.ts create mode 100644 tests/eval.spec.ts create mode 100644 tests/parser.spec.ts (limited to 'tests') diff --git a/tests/basic.spec.ts b/tests/basic.spec.ts deleted file mode 100644 index 150966b..0000000 --- a/tests/basic.spec.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { left, right } from 'fp-ts/Either' -import { - integer, - whitespace, - whitespaces0, - delimited, -} from '../src/parser/utils' -import { parser } from '../src/parser' -import { none, some } from 'fp-ts/Option' -import { Expr } from '../src/types' - -const plog = (x: any) => console.log(JSON.stringify(x, null, 2)) - -describe('Foobar', () => { - it('should do shit', () => { - expect(integer('12901')).toEqual(right([12901, ''])) - expect(integer('12901asas')).toEqual(right([12901, 'asas'])) - expect(whitespace(' ')).toEqual(right([' ', ''])) - expect(whitespace('\n')).toEqual(right(['\n', ''])) - expect(whitespace('a')).toEqual(left(['unable to match', 'a'])) - - expect(delimited(whitespaces0, integer, whitespaces0)(' 20 ')).toEqual( - right([20, '']), - ) - expect(delimited(whitespaces0, integer, whitespaces0)(' 2 0 ')).toEqual( - right([2, '0 ']), - ) - }) - - it('should maybeshut', () => { - expect(parser(/^ .\s(\n)\b \T $/.source)).toEqual( - right([ - [ - some(Expr.Start(null)), - [ - Expr.AnyItem(null), - Expr.AnyString(null), - Expr.Group({ exprs: [Expr.AnyNumber(null)] }), - Expr.AnyBool(null), - Expr.Truthy(null), - ], - some(Expr.End(null)), - ], - '', - ]), - ) - - expect(parser(/^ \s* \T? \n+ $/.source)).toEqual( - right([ - [ - some(Expr.Start(null)), - [ - Expr.ZeroOrMore({ expr: Expr.AnyString(null) }), - Expr.Optional({ expr: Expr.Truthy(null) }), - Expr.OneOrMore({ expr: Expr.AnyNumber(null) }), - ], - some(Expr.End(null)), - ], - '', - ]), - ) - - expect(parser(/ \s|\b\T|\n /.source)).toEqual( - right([ - [ - none, - [ - Expr.Or({ - left: Expr.AnyString(null), - right: [ - Expr.AnyBool(null), - Expr.Or({ - left: Expr.Truthy(null), - right: [Expr.AnyNumber(null)], - }), - ], - }), - ], - none, - ], - '', - ]), - ) - }) -}) diff --git a/tests/eval.spec.ts b/tests/eval.spec.ts new file mode 100644 index 0000000..97995bf --- /dev/null +++ b/tests/eval.spec.ts @@ -0,0 +1,20 @@ +import { left, right } from 'fp-ts/Either' +import { none, some } from 'fp-ts/Option' +import { Expr, ListExpr } from '../src/types' +import { jlog } from '../src/utils' +import { find } from '../src/eval' + +describe('Eval', () => { + it('should do shit', () => { + const liexp: ListExpr = [ + none, + [ Expr.AnyNumber(null), Expr.Truthy(null) ], + none, + ] + + const list = [0, 1, '2', 3, [4], 5] + + expect(find(liexp, list)).toEqual([1, 3, 5]) + }) +}) + diff --git a/tests/parser.spec.ts b/tests/parser.spec.ts new file mode 100644 index 0000000..150966b --- /dev/null +++ b/tests/parser.spec.ts @@ -0,0 +1,85 @@ +import { left, right } from 'fp-ts/Either' +import { + integer, + whitespace, + whitespaces0, + delimited, +} from '../src/parser/utils' +import { parser } from '../src/parser' +import { none, some } from 'fp-ts/Option' +import { Expr } from '../src/types' + +const plog = (x: any) => console.log(JSON.stringify(x, null, 2)) + +describe('Foobar', () => { + it('should do shit', () => { + expect(integer('12901')).toEqual(right([12901, ''])) + expect(integer('12901asas')).toEqual(right([12901, 'asas'])) + expect(whitespace(' ')).toEqual(right([' ', ''])) + expect(whitespace('\n')).toEqual(right(['\n', ''])) + expect(whitespace('a')).toEqual(left(['unable to match', 'a'])) + + expect(delimited(whitespaces0, integer, whitespaces0)(' 20 ')).toEqual( + right([20, '']), + ) + expect(delimited(whitespaces0, integer, whitespaces0)(' 2 0 ')).toEqual( + right([2, '0 ']), + ) + }) + + it('should maybeshut', () => { + expect(parser(/^ .\s(\n)\b \T $/.source)).toEqual( + right([ + [ + some(Expr.Start(null)), + [ + Expr.AnyItem(null), + Expr.AnyString(null), + Expr.Group({ exprs: [Expr.AnyNumber(null)] }), + Expr.AnyBool(null), + Expr.Truthy(null), + ], + some(Expr.End(null)), + ], + '', + ]), + ) + + expect(parser(/^ \s* \T? \n+ $/.source)).toEqual( + right([ + [ + some(Expr.Start(null)), + [ + Expr.ZeroOrMore({ expr: Expr.AnyString(null) }), + Expr.Optional({ expr: Expr.Truthy(null) }), + Expr.OneOrMore({ expr: Expr.AnyNumber(null) }), + ], + some(Expr.End(null)), + ], + '', + ]), + ) + + expect(parser(/ \s|\b\T|\n /.source)).toEqual( + right([ + [ + none, + [ + Expr.Or({ + left: Expr.AnyString(null), + right: [ + Expr.AnyBool(null), + Expr.Or({ + left: Expr.Truthy(null), + right: [Expr.AnyNumber(null)], + }), + ], + }), + ], + none, + ], + '', + ]), + ) + }) +}) -- cgit v1.3.1