85 lines
1.8 KiB
JavaScript
85 lines
1.8 KiB
JavaScript
|
|
var test = require("tap").test;
|
|
var chain = require('../../');
|
|
var produce = require('../produce.js');
|
|
|
|
test("stack extend part", function (t) {
|
|
var modify = function (text) {
|
|
return function (error, frames) {
|
|
if (error.test) {
|
|
frames.splice(1, 0, text);
|
|
}
|
|
|
|
return frames;
|
|
};
|
|
};
|
|
|
|
t.test("no extend modifier attached", function (t) {
|
|
t.equal(produce.real(3), produce.fake([
|
|
'Error: trace',
|
|
' at {where}:18:17',
|
|
' at deepStack ({where}:5:5)',
|
|
' at deepStack ({where}:7:5)'
|
|
]));
|
|
|
|
t.end();
|
|
});
|
|
|
|
t.test("attach modifier", function (t) {
|
|
var wonderLand = modify("wonder land");
|
|
|
|
chain.extend.attach(wonderLand);
|
|
|
|
t.equal(produce.real(3), produce.fake([
|
|
'Error: trace',
|
|
' at {where}:18:17',
|
|
' at wonder land',
|
|
' at deepStack ({where}:5:5)'
|
|
]));
|
|
|
|
chain.extend.deattach(wonderLand);
|
|
|
|
t.end();
|
|
});
|
|
|
|
t.test("deattach modifier", function (t) {
|
|
var wonderLand = modify("wonder land");
|
|
|
|
chain.extend.attach(wonderLand);
|
|
t.equal(chain.extend.deattach(wonderLand), true);
|
|
|
|
t.equal(produce.real(3), produce.fake([
|
|
'Error: trace',
|
|
' at {where}:18:17',
|
|
' at deepStack ({where}:5:5)',
|
|
' at deepStack ({where}:7:5)'
|
|
]));
|
|
|
|
t.equal(chain.extend.deattach(wonderLand), false);
|
|
|
|
t.end();
|
|
});
|
|
|
|
t.test("execution order", function (t) {
|
|
var wonderLand = modify("wonder land");
|
|
var outerSpace = modify("outer space");
|
|
|
|
chain.extend.attach(wonderLand);
|
|
chain.extend.attach(outerSpace);
|
|
|
|
t.equal(produce.real(3), produce.fake([
|
|
'Error: trace',
|
|
' at {where}:18:17',
|
|
' at outer space',
|
|
' at wonder land'
|
|
]));
|
|
|
|
chain.extend.deattach(wonderLand);
|
|
chain.extend.deattach(outerSpace);
|
|
|
|
t.end();
|
|
});
|
|
|
|
t.end();
|
|
});
|