aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2022-01-24 22:06:03 +0530
committerAkshay Nair <phenax5@gmail.com>2022-01-24 22:06:03 +0530
commitea0baf1bb82d40ebfcaca1de6a2a0f6d56c709e7 (patch)
tree8df0853d6f081bb730284bb2256c1b12ec43d62f /tests
parentf380df108a08bed22b92b9c5355d0b67168375be (diff)
downloadelxr-ea0baf1bb82d40ebfcaca1de6a2a0f6d56c709e7.tar.gz
elxr-ea0baf1bb82d40ebfcaca1de6a2a0f6d56c709e7.zip
feat(parser): implements regex literal parser
Diffstat (limited to 'tests')
-rw-r--r--tests/parser.spec.ts104
1 files changed, 59 insertions, 45 deletions
diff --git a/tests/parser.spec.ts b/tests/parser.spec.ts
index 13a8838..12a0bd9 100644
--- a/tests/parser.spec.ts
+++ b/tests/parser.spec.ts
@@ -146,51 +146,6 @@ describe('Parser', () => {
)
})
- it('literals', () => {
- // unsigned numbers
- expect(parser(/ 0.105 /.source)).toEqual(
- wrap(Expr.Literal(Literal.Number(0.105))),
- )
- expect(parser(/ 9 /.source)).toEqual(wrap(Expr.Literal(Literal.Number(9))))
- expect(parser(/ 23 /.source)).toEqual(
- wrap(Expr.Literal(Literal.Number(23))),
- )
-
- // signed numbers
- expect(parser(/ 23.025 /.source)).toEqual(
- wrap(Expr.Literal(Literal.Number(23.025))),
- )
- expect(parser(/ -23.025 /.source)).toEqual(
- wrap(Expr.Literal(Literal.Number(-23.025))),
- )
- expect(parser(/ 23 /.source)).toEqual(
- wrap(Expr.Literal(Literal.Number(23))),
- )
- expect(parser(/ -23 /.source)).toEqual(
- wrap(Expr.Literal(Literal.Number(-23))),
- )
-
- // boolean
- expect(parser(/ true /.source)).toEqual(
- wrap(Expr.Literal(Literal.Boolean(true))),
- )
- expect(parser(/ false /.source)).toEqual(
- wrap(Expr.Literal(Literal.Boolean(false))),
- )
-
- // String literal
- expect(parser(/ "foobar" /.source)).toEqual(
- wrap(Expr.Literal(Literal.String('foobar'))),
- )
- expect(parser(/ "\nwowksadj\n\t wjksdlsd'' !@#%^(&^%$) " /.source)).toEqual(
- wrap(
- Expr.Literal(
- Literal.String("\\nwowksadj\\n\\t wjksdlsd'' !@#%^(&^%$) "),
- ),
- ),
- )
- })
-
it('sequence of values', () => {
expect(parser(/true, \s\T, \n/.source)).toEqual(
wrap(
@@ -204,4 +159,63 @@ describe('Parser', () => {
),
)
})
+
+ describe('Literals', () => {
+ it('numbers', () => {
+ // unsigned numbers
+ expect(parser(/ 0.105 /.source)).toEqual(
+ wrap(Expr.Literal(Literal.Number(0.105))),
+ )
+ expect(parser(/ 9 /.source)).toEqual(
+ wrap(Expr.Literal(Literal.Number(9))),
+ )
+ expect(parser(/ 23 /.source)).toEqual(
+ wrap(Expr.Literal(Literal.Number(23))),
+ )
+
+ // signed numbers
+ expect(parser(/ 23.025 /.source)).toEqual(
+ wrap(Expr.Literal(Literal.Number(23.025))),
+ )
+ expect(parser(/ -23.025 /.source)).toEqual(
+ wrap(Expr.Literal(Literal.Number(-23.025))),
+ )
+ expect(parser(/ 23 /.source)).toEqual(
+ wrap(Expr.Literal(Literal.Number(23))),
+ )
+ expect(parser(/ -23 /.source)).toEqual(
+ wrap(Expr.Literal(Literal.Number(-23))),
+ )
+ })
+
+ it('boolean', () => {
+ expect(parser(/ true /.source)).toEqual(
+ wrap(Expr.Literal(Literal.Boolean(true))),
+ )
+ expect(parser(/ false /.source)).toEqual(
+ wrap(Expr.Literal(Literal.Boolean(false))),
+ )
+ })
+
+ it('string', () => {
+ expect(parser(/ "foobar" /.source)).toEqual(
+ wrap(Expr.Literal(Literal.String('foobar'))),
+ )
+ expect(
+ parser(/ "\nwowksadj\n\t wjksdlsd'' !@#%^(&^%$) " /.source),
+ ).toEqual(
+ wrap(
+ Expr.Literal(
+ Literal.String("\\nwowksadj\\n\\t wjksdlsd'' !@#%^(&^%$) "),
+ ),
+ ),
+ )
+ })
+
+ it('regex', () => {
+ expect(parser(/ \/^foo(bar|baz)?\/gi /.source)).toEqual(
+ wrap(Expr.Literal(Literal.RegExp(/^foo(bar|baz)?/gi))),
+ )
+ })
+ })
})