summaryrefslogtreecommitdiff
path: root/tests/parser.spec.ts
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2023-08-10 22:45:00 +0530
committerAkshay Nair <phenax5@gmail.com>2023-08-10 22:45:00 +0530
commite01cb693bc5737792e2b37abfd98d2d8f81bac4d (patch)
tree894d367e14f5a7edac5a80fb7caf9f9a84727d1e /tests/parser.spec.ts
parent2102e7608b1b3634a651cb40508d2f560f3eeb05 (diff)
downloadcss-everything-e01cb693bc5737792e2b37abfd98d2d8f81bac4d.tar.gz
css-everything-e01cb693bc5737792e2b37abfd98d2d8f81bac4d.zip
feat: adds simple evaluator
Diffstat (limited to 'tests/parser.spec.ts')
-rw-r--r--tests/parser.spec.ts76
1 files changed, 76 insertions, 0 deletions
diff --git a/tests/parser.spec.ts b/tests/parser.spec.ts
new file mode 100644
index 0000000..48c398c
--- /dev/null
+++ b/tests/parser.spec.ts
@@ -0,0 +1,76 @@
+import { Expr, parse } from '../src/parser'
+
+describe('parser', () => {
+ it('should parse function call', () => {
+ expect(parse('hello()')).toEqual([Expr.Call({ name: 'hello', args: [] })])
+ expect(parse('hello ( wow , foo ) ')).toEqual([
+ Expr.Call({
+ name: 'hello',
+ args: [Expr.Identifier('wow'), Expr.Identifier('foo')],
+ }),
+ ])
+ expect(parse('hello(wow,foo)')).toEqual([
+ Expr.Call({
+ name: 'hello',
+ args: [Expr.Identifier('wow'), Expr.Identifier('foo')],
+ }),
+ ])
+ expect(parse('hello(wow,foo, coolio)')).toEqual([
+ Expr.Call({
+ name: 'hello',
+ args: [
+ Expr.Identifier('wow'),
+ Expr.Identifier('foo'),
+ Expr.Identifier('coolio'),
+ ],
+ }),
+ ])
+ expect(parse('hello(wow)')).toEqual([
+ Expr.Call({ name: 'hello', args: [Expr.Identifier('wow')] }),
+ ])
+ })
+
+ it('should parse sequential function calls', () => {
+ expect(parse('hello(world) foo-doo(bar, baz)')).toEqual([
+ Expr.Call({
+ name: 'hello',
+ args: [Expr.Identifier('world')],
+ }),
+ Expr.Call({
+ name: 'foo-doo',
+ args: [Expr.Identifier('bar'), Expr.Identifier('baz')],
+ }),
+ ])
+ })
+
+ it('should parse string literal', () => {
+ expect(parse(`"hello world toodles \' nice single quote there"`)).toEqual([
+ Expr.LiteralString(`hello world toodles \' nice single quote there`),
+ ])
+
+ expect(parse(` 'hello world toodles \" nice double quote there' `)).toEqual(
+ [Expr.LiteralString(`hello world toodles \" nice double quote there`)]
+ )
+ })
+
+ it('should parse var identifiers', () => {
+ expect(parse(`var(--hello, 'default')`)).toEqual([
+ Expr.Call({
+ name: 'var',
+ args: [Expr.VarIdentifier('--hello'), Expr.LiteralString(`default`)],
+ }),
+ ])
+
+ expect(parse(`calc(var(--hello))`)).toEqual([
+ Expr.Call({
+ name: 'calc',
+ args: [
+ Expr.Call({
+ name: 'var',
+ args: [Expr.VarIdentifier('--hello')],
+ }),
+ ],
+ }),
+ ])
+ })
+})