UNPKG

1.19 kBtext/coffeescriptView Raw
1suite 'Parser', ->
2
3 setup ->
4 @shouldParse = (input) -> doesNotThrow -> parse input
5 @shouldNotParse = (input) -> throws -> parse input
6
7
8 test 'empty program', -> @shouldParse ''
9 test 'simple number', -> @shouldParse '0'
10
11 test 'simple error', -> @shouldNotParse '0+'
12
13 test 'deeply nested expressions', ->
14 @shouldParse '((((((((((((((((((((0))))))))))))))))))))'
15 @shouldParse '++++++++++++++++++++0'
16
17 test '#142 inconsistently indented object literal', ->
18 inconsistently =
19 indented:
20 object:
21 literal: yes
22 eq inconsistently.indented.object.literal, yes
23
24 test 'inconsistently indented if statement', ->
25 nonceA = {}
26 nonceB = {}
27
28 fn = (b) ->
29 if b
30 nonceA
31 else
32 nonceB
33
34 eq nonceA, fn 1
35 eq nonceB, fn 0
36
37 test 'inconsistent object literal dedent', ->
38 @shouldNotParse '''
39 obj =
40 foo: 5
41 bar: 6
42 '''
43
44 test 'inconsistent if statement dedent', ->
45 @shouldNotParse '''
46 f = ->
47 if something
48 'yup'
49 else
50 'nope'
51 '''
52
53 test 'windows line endings', ->
54 @shouldParse 'if test\r\n fn a\r\n\r\n fn b'