-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcall_expression.js
37 lines (27 loc) · 1000 Bytes
/
call_expression.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
var lexer = require('../../index').lex.lexer;
var parser = require('../../index').parse.parser;
var $ = require('../$');
var testParser = function(program) {
var expr = parser.parseStream(lexer.lex(program));
return expr.body[0].expression;
};
exports.simple= function(test) {
var expr = testParser("a(b);");
test.equal(expr.type, 'CallExpression');
test.equal(expr.callee.type, 'Identifier');
$.id(test, expr.callee, 'a');
test.equal(expr.args.length, 1);
$.id(test, expr.args[0], 'b');
test.done();
};
exports.call_expression_associativity = function(test) {
var expr = testParser("a(b)(c);");
test.equal(expr.type, 'CallExpression');
test.equal(expr.callee.type, 'CallExpression');
test.equal(expr.callee.callee.name, 'a');
test.equal(expr.callee.args.length, 1);
test.equal(expr.callee.args[0].name, 'b');
test.equal(expr.args.length, 1);
test.equal(expr.args[0].name, 'c');
test.done();
};