PHP WebShell
Текущая директория: /opt/BitGoJS/node_modules/tape/test
Просмотр файла: capture.js
'use strict';
var tape = require('../');
var tap = require('tap');
var concat = require('concat-stream');
var inspect = require('object-inspect');
var forEach = require('for-each');
var v = require('es-value-fixtures');
var stripFullStack = require('./common').stripFullStack;
tap.test('capture: output', function (tt) {
tt.plan(1);
var test = tape.createHarness();
var count = 0;
test.createStream().pipe(concat(function (body) {
tt.same(stripFullStack(body.toString('utf8')), [].concat(
'TAP version 13',
'# argument validation',
v.primitives.map(function (x) {
return 'ok ' + ++count + ' ' + inspect(x) + ' is not an Object';
}),
v.nonPropertyKeys.map(function (x) {
return 'ok ' + ++count + ' ' + inspect(x) + ' is not a valid property key';
}),
v.nonFunctions.filter(function (x) { return typeof x !== 'undefined'; }).map(function (x) {
return 'ok ' + ++count + ' ' + inspect(x) + ' is not a function';
}),
'# captures calls',
'ok ' + ++count + ' property has expected initial value',
'# capturing',
'ok ' + ++count + ' throwing implementation throws',
'ok ' + ++count + ' should be equivalent',
'ok ' + ++count + ' should be equivalent',
'ok ' + ++count + ' should be equivalent',
'ok ' + ++count + ' should be equivalent',
'ok ' + ++count + ' should be equivalent',
'# post-capturing',
'ok ' + ++count + ' property is restored',
'ok ' + ++count + ' added property is removed',
'',
'1..' + count,
'# tests ' + count,
'# pass ' + count,
'',
'# ok',
''
));
}));
test('argument validation', function (t) {
forEach(v.primitives, function (primitive) {
t.throws(
function () { t.capture(primitive, ''); },
TypeError,
inspect(primitive) + ' is not an Object'
);
});
forEach(v.nonPropertyKeys, function (nonPropertyKey) {
t.throws(
function () { t.capture({}, nonPropertyKey); },
TypeError,
inspect(nonPropertyKey) + ' is not a valid property key'
);
});
forEach(v.nonFunctions, function (nonFunction) {
if (typeof nonFunction !== 'undefined') {
t.throws(
function () { t.capture({}, '', nonFunction); },
TypeError,
inspect(nonFunction) + ' is not a function'
);
}
});
t.end();
});
test('captures calls', function (t) {
var sentinel = { sentinel: true, inspect: function () { return '{ SENTINEL OBJECT }'; } };
var o = { foo: sentinel, inspect: function () { return '{ o OBJECT }'; } };
t.equal(o.foo, sentinel, 'property has expected initial value');
t.test('capturing', function (st) {
var results = st.capture(o, 'foo', function () { return sentinel; });
var results2 = st.capture(o, 'foo2');
var up = new SyntaxError('foo');
var resultsThrow = st.capture(o, 'fooThrow', function () { throw up; });
o.foo(1, 2, 3);
o.foo(3, 4, 5);
o.foo2.call(sentinel, 1);
st.throws(
function () { o.fooThrow(1, 2, 3); },
SyntaxError,
'throwing implementation throws'
);
st.deepEqual(results(), [
{ args: [1, 2, 3], receiver: o, returned: sentinel },
{ args: [3, 4, 5], receiver: o, returned: sentinel }
]);
st.deepEqual(results(), []);
o.foo(6, 7, 8);
st.deepEqual(results(), [
{ args: [6, 7, 8], receiver: o, returned: sentinel }
]);
st.deepEqual(results2(), [
{ args: [1], receiver: sentinel, returned: undefined }
]);
st.deepEqual(resultsThrow(), [
{ args: [1, 2, 3], receiver: o, threw: true }
]);
st.end();
});
t.test('post-capturing', function (st) {
st.equal(o.foo, sentinel, 'property is restored');
st.notOk('foo2' in o, 'added property is removed');
st.end();
});
t.end();
});
});
Выполнить команду
Для локальной разработки. Не используйте в интернете!