|
|
@@ -17,18 +17,22 @@ describe('Directive Parser', function () {
|
|
|
expect(res[0].raw).toBe('arg:exp')
|
|
|
})
|
|
|
|
|
|
- it('arg : exp | abc', function () {
|
|
|
- var res = parse(' arg : exp | abc de')
|
|
|
+ // filters
|
|
|
+ it('arg : exp | abc de | bcd', function () {
|
|
|
+ var res = parse(' arg : exp | abc de | bcd')
|
|
|
expect(res.length).toBe(1)
|
|
|
expect(res[0].expression).toBe('exp')
|
|
|
expect(res[0].arg).toBe('arg')
|
|
|
- expect(res[0].raw).toBe('arg : exp | abc de')
|
|
|
- expect(res[0].filters.length).toBe(1)
|
|
|
+ expect(res[0].raw).toBe('arg : exp | abc de | bcd')
|
|
|
+ expect(res[0].filters.length).toBe(2)
|
|
|
expect(res[0].filters[0].name).toBe('abc')
|
|
|
expect(res[0].filters[0].args.length).toBe(1)
|
|
|
expect(res[0].filters[0].args[0]).toBe('de')
|
|
|
+ expect(res[0].filters[1].name).toBe('bcd')
|
|
|
+ expect(res[0].filters[1].args).toBeNull()
|
|
|
})
|
|
|
|
|
|
+ // double pipe
|
|
|
it('a || b | c', function () {
|
|
|
var res = parse('a || b | c')
|
|
|
expect(res.length).toBe(1)
|
|
|
@@ -39,13 +43,15 @@ describe('Directive Parser', function () {
|
|
|
expect(res[0].filters[0].args).toBeNull()
|
|
|
})
|
|
|
|
|
|
- it('a ? b : c', function () {
|
|
|
- var res = parse('a ? b : c')
|
|
|
+ // single quote + boolean
|
|
|
+ it('a ? \'b\' : c', function () {
|
|
|
+ var res = parse('a ? \'b\' : c')
|
|
|
expect(res.length).toBe(1)
|
|
|
- expect(res[0].expression).toBe('a ? b : c')
|
|
|
+ expect(res[0].expression).toBe('a ? \'b\' : c')
|
|
|
expect(res[0].filters).toBeUndefined()
|
|
|
})
|
|
|
|
|
|
+ // double quote + boolean
|
|
|
it('"a:b:c||d|e|f" || d ? a : b', function () {
|
|
|
var res = parse('"a:b:c||d|e|f" || d ? a : b')
|
|
|
expect(res.length).toBe(1)
|
|
|
@@ -54,6 +60,7 @@ describe('Directive Parser', function () {
|
|
|
expect(res[0].arg).toBeUndefined()
|
|
|
})
|
|
|
|
|
|
+ // multiple simple clause
|
|
|
it('a, b, c', function () {
|
|
|
var res = parse('a, b, c')
|
|
|
expect(res.length).toBe(3)
|
|
|
@@ -62,21 +69,27 @@ describe('Directive Parser', function () {
|
|
|
expect(res[2].expression).toBe('c')
|
|
|
})
|
|
|
|
|
|
- it('a:b | c, d:e | f, g:h | i', function () {
|
|
|
- var res = parse('a:b | c, d:e | f, g:h | i')
|
|
|
+ // multiple complex clause
|
|
|
+ it('a:b | c | j, d:e | f | k l, g:h | i', function () {
|
|
|
+ var res = parse('a:b | c | j, d:e | f | k l, g:h | i')
|
|
|
expect(res.length).toBe(3)
|
|
|
|
|
|
expect(res[0].arg).toBe('a')
|
|
|
expect(res[0].expression).toBe('b')
|
|
|
- expect(res[0].filters.length).toBe(1)
|
|
|
+ expect(res[0].filters.length).toBe(2)
|
|
|
expect(res[0].filters[0].name).toBe('c')
|
|
|
expect(res[0].filters[0].args).toBeNull()
|
|
|
+ expect(res[0].filters[1].name).toBe('j')
|
|
|
+ expect(res[0].filters[1].args).toBeNull()
|
|
|
|
|
|
expect(res[1].arg).toBe('d')
|
|
|
expect(res[1].expression).toBe('e')
|
|
|
- expect(res[1].filters.length).toBe(1)
|
|
|
+ expect(res[1].filters.length).toBe(2)
|
|
|
expect(res[1].filters[0].name).toBe('f')
|
|
|
expect(res[1].filters[0].args).toBeNull()
|
|
|
+ expect(res[1].filters[1].name).toBe('k')
|
|
|
+ expect(res[1].filters[1].args.length).toBe(1)
|
|
|
+ expect(res[1].filters[1].args[0]).toBe('l')
|
|
|
|
|
|
expect(res[2].arg).toBe('g')
|
|
|
expect(res[2].expression).toBe('h')
|
|
|
@@ -85,6 +98,7 @@ describe('Directive Parser', function () {
|
|
|
expect(res[2].filters[0].args).toBeNull()
|
|
|
})
|
|
|
|
|
|
+ // super complex
|
|
|
it('click:test(c.indexOf(d,f),"e,f"), input: d || [e,f], ok:{a:1,b:2}', function () {
|
|
|
var res = parse('click:test(c.indexOf(d,f),"e,f"), input: d || [e,f], ok:{a:1,b:2}')
|
|
|
expect(res.length).toBe(3)
|