32 lines
789 B
JavaScript
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);
|
|
});
|