directive_parser_spec.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. var parse = require('../../src/parse/directive').parse
  2. describe('Directive Parser', function () {
  3. it('exp', function () {
  4. var res = parse('exp')
  5. expect(res.length).toBe(1)
  6. expect(res[0].expression).toBe('exp')
  7. expect(res[0].raw).toBe('exp')
  8. })
  9. it('arg:exp', function () {
  10. var res = parse('arg:exp')
  11. expect(res.length).toBe(1)
  12. expect(res[0].expression).toBe('exp')
  13. expect(res[0].arg).toBe('arg')
  14. expect(res[0].raw).toBe('arg:exp')
  15. })
  16. it('arg : exp | abc', function () {
  17. var res = parse(' arg : exp | abc de')
  18. expect(res.length).toBe(1)
  19. expect(res[0].expression).toBe('exp')
  20. expect(res[0].arg).toBe('arg')
  21. expect(res[0].raw).toBe('arg : exp | abc de')
  22. expect(res[0].filters.length).toBe(1)
  23. expect(res[0].filters[0].name).toBe('abc')
  24. expect(res[0].filters[0].args.length).toBe(1)
  25. expect(res[0].filters[0].args[0]).toBe('de')
  26. })
  27. it('a || b | c', function () {
  28. var res = parse('a || b | c')
  29. expect(res.length).toBe(1)
  30. expect(res[0].expression).toBe('a || b')
  31. expect(res[0].raw).toBe('a || b | c')
  32. expect(res[0].filters.length).toBe(1)
  33. expect(res[0].filters[0].name).toBe('c')
  34. expect(res[0].filters[0].args).toBeNull()
  35. })
  36. it('a ? b : c', function () {
  37. var res = parse('a ? b : c')
  38. expect(res.length).toBe(1)
  39. expect(res[0].expression).toBe('a ? b : c')
  40. expect(res[0].filters).toBeUndefined()
  41. })
  42. it('"a:b:c||d|e|f" || d ? a : b', function () {
  43. var res = parse('"a:b:c||d|e|f" || d ? a : b')
  44. expect(res.length).toBe(1)
  45. expect(res[0].expression).toBe('"a:b:c||d|e|f" || d ? a : b')
  46. expect(res[0].filters).toBeUndefined()
  47. expect(res[0].arg).toBeUndefined()
  48. })
  49. it('a, b, c', function () {
  50. var res = parse('a, b, c')
  51. expect(res.length).toBe(3)
  52. expect(res[0].expression).toBe('a')
  53. expect(res[1].expression).toBe('b')
  54. expect(res[2].expression).toBe('c')
  55. })
  56. it('a:b | c, d:e | f, g:h | i', function () {
  57. var res = parse('a:b | c, d:e | f, g:h | i')
  58. expect(res.length).toBe(3)
  59. expect(res[0].arg).toBe('a')
  60. expect(res[0].expression).toBe('b')
  61. expect(res[0].filters.length).toBe(1)
  62. expect(res[0].filters[0].name).toBe('c')
  63. expect(res[0].filters[0].args).toBeNull()
  64. expect(res[1].arg).toBe('d')
  65. expect(res[1].expression).toBe('e')
  66. expect(res[1].filters.length).toBe(1)
  67. expect(res[1].filters[0].name).toBe('f')
  68. expect(res[1].filters[0].args).toBeNull()
  69. expect(res[2].arg).toBe('g')
  70. expect(res[2].expression).toBe('h')
  71. expect(res[2].filters.length).toBe(1)
  72. expect(res[2].filters[0].name).toBe('i')
  73. expect(res[2].filters[0].args).toBeNull()
  74. })
  75. it('click:test(c.indexOf(d,f),"e,f"), input: d || [e,f], ok:{a:1,b:2}', function () {
  76. var res = parse('click:test(c.indexOf(d,f),"e,f"), input: d || [e,f], ok:{a:1,b:2}')
  77. expect(res.length).toBe(3)
  78. expect(res[0].arg).toBe('click')
  79. expect(res[0].expression).toBe('test(c.indexOf(d,f),"e,f")')
  80. expect(res[1].arg).toBe('input')
  81. expect(res[1].expression).toBe('d || [e,f]')
  82. expect(res[1].filters).toBeUndefined()
  83. expect(res[2].arg).toBe('ok')
  84. expect(res[2].expression).toBe('{a:1,b:2}')
  85. })
  86. it('cache', function () {
  87. var res1 = parse('a || b | c')
  88. var res2 = parse('a || b | c')
  89. expect(res1).toBe(res2)
  90. })
  91. })