commando.html5/node_modules/burrito/test/ast.js

32 lines
789 B
JavaScript

var test = require('tap').test;
var burrito = require('../');
var vm = require('vm');
test('ast', function (t) {
t.plan(2);
var ast = burrito.parse('f(g(h(5)))', false, true);
var src = burrito(ast, function (node) {
if (node.name === 'call') {
node.wrap(function (s) {
return 'z(' + s + ')';
});
}
});
var times = 0;
t.equal(
vm.runInNewContext(src, {
f : function (x) { return x + 1 },
g : function (x) { return x + 2 },
h : function (x) { return x + 3 },
z : function (x) {
times ++;
return x * 10;
},
}),
(((((5 + 3) * 10) + 2) * 10) + 1) * 10
);
t.equal(times, 3);
});