41 lines
1.2 KiB
CoffeeScript
41 lines
1.2 KiB
CoffeeScript
# Parser
|
|
# ---------
|
|
|
|
test "operator precedence for logical operators", ->
|
|
source = '''
|
|
a or b and c
|
|
'''
|
|
block = CoffeeScript.nodes source
|
|
[expression] = block.expressions
|
|
eq expression.first.base.value, 'a'
|
|
eq expression.operator, '||'
|
|
eq expression.second.first.base.value, 'b'
|
|
eq expression.second.operator, '&&'
|
|
eq expression.second.second.base.value, 'c'
|
|
|
|
test "operator precedence for bitwise operators", ->
|
|
source = '''
|
|
a | b ^ c & d
|
|
'''
|
|
block = CoffeeScript.nodes source
|
|
[expression] = block.expressions
|
|
eq expression.first.base.value, 'a'
|
|
eq expression.operator, '|'
|
|
eq expression.second.first.base.value, 'b'
|
|
eq expression.second.operator, '^'
|
|
eq expression.second.second.first.base.value, 'c'
|
|
eq expression.second.second.operator, '&'
|
|
eq expression.second.second.second.base.value, 'd'
|
|
|
|
test "operator precedence for binary ? operator", ->
|
|
source = '''
|
|
a ? b and c
|
|
'''
|
|
block = CoffeeScript.nodes source
|
|
[expression] = block.expressions
|
|
eq expression.first.base.value, 'a'
|
|
eq expression.operator, '?'
|
|
eq expression.second.first.base.value, 'b'
|
|
eq expression.second.operator, '&&'
|
|
eq expression.second.second.base.value, 'c'
|