.
This commit is contained in:
		
							
								
								
									
										58
									
								
								qwen/nodejs/node_modules/object-inspect/test/bigint.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								qwen/nodejs/node_modules/object-inspect/test/bigint.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
var inspect = require('../');
 | 
			
		||||
var test = require('tape');
 | 
			
		||||
var hasToStringTag = require('has-tostringtag/shams')();
 | 
			
		||||
 | 
			
		||||
test('bigint', { skip: typeof BigInt === 'undefined' }, function (t) {
 | 
			
		||||
    t.test('primitives', function (st) {
 | 
			
		||||
        st.plan(3);
 | 
			
		||||
 | 
			
		||||
        st.equal(inspect(BigInt(-256)), '-256n');
 | 
			
		||||
        st.equal(inspect(BigInt(0)), '0n');
 | 
			
		||||
        st.equal(inspect(BigInt(256)), '256n');
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    t.test('objects', function (st) {
 | 
			
		||||
        st.plan(3);
 | 
			
		||||
 | 
			
		||||
        st.equal(inspect(Object(BigInt(-256))), 'Object(-256n)');
 | 
			
		||||
        st.equal(inspect(Object(BigInt(0))), 'Object(0n)');
 | 
			
		||||
        st.equal(inspect(Object(BigInt(256))), 'Object(256n)');
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    t.test('syntactic primitives', function (st) {
 | 
			
		||||
        st.plan(3);
 | 
			
		||||
 | 
			
		||||
        /* eslint-disable no-new-func */
 | 
			
		||||
        st.equal(inspect(Function('return -256n')()), '-256n');
 | 
			
		||||
        st.equal(inspect(Function('return 0n')()), '0n');
 | 
			
		||||
        st.equal(inspect(Function('return 256n')()), '256n');
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    t.test('toStringTag', { skip: !hasToStringTag }, function (st) {
 | 
			
		||||
        st.plan(1);
 | 
			
		||||
 | 
			
		||||
        var faker = {};
 | 
			
		||||
        faker[Symbol.toStringTag] = 'BigInt';
 | 
			
		||||
        st.equal(
 | 
			
		||||
            inspect(faker),
 | 
			
		||||
            '{ [Symbol(Symbol.toStringTag)]: \'BigInt\' }',
 | 
			
		||||
            'object lying about being a BigInt inspects as an object'
 | 
			
		||||
        );
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    t.test('numericSeparator', function (st) {
 | 
			
		||||
        st.equal(inspect(BigInt(0), { numericSeparator: false }), '0n', '0n, numericSeparator false');
 | 
			
		||||
        st.equal(inspect(BigInt(0), { numericSeparator: true }), '0n', '0n, numericSeparator true');
 | 
			
		||||
 | 
			
		||||
        st.equal(inspect(BigInt(1234), { numericSeparator: false }), '1234n', '1234n, numericSeparator false');
 | 
			
		||||
        st.equal(inspect(BigInt(1234), { numericSeparator: true }), '1_234n', '1234n, numericSeparator true');
 | 
			
		||||
        st.equal(inspect(BigInt(-1234), { numericSeparator: false }), '-1234n', '1234n, numericSeparator false');
 | 
			
		||||
        st.equal(inspect(BigInt(-1234), { numericSeparator: true }), '-1_234n', '1234n, numericSeparator true');
 | 
			
		||||
 | 
			
		||||
        st.end();
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										15
									
								
								qwen/nodejs/node_modules/object-inspect/test/browser/dom.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								qwen/nodejs/node_modules/object-inspect/test/browser/dom.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
			
		||||
var inspect = require('../../');
 | 
			
		||||
var test = require('tape');
 | 
			
		||||
 | 
			
		||||
test('dom element', function (t) {
 | 
			
		||||
    t.plan(1);
 | 
			
		||||
 | 
			
		||||
    var d = document.createElement('div');
 | 
			
		||||
    d.setAttribute('id', 'beep');
 | 
			
		||||
    d.innerHTML = '<b>wooo</b><i>iiiii</i>';
 | 
			
		||||
 | 
			
		||||
    t.equal(
 | 
			
		||||
        inspect([d, { a: 3, b: 4, c: [5, 6, [7, [8, [9]]]] }]),
 | 
			
		||||
        '[ <div id="beep">...</div>, { a: 3, b: 4, c: [ 5, 6, [ 7, [ 8, [Object] ] ] ] } ]'
 | 
			
		||||
    );
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										16
									
								
								qwen/nodejs/node_modules/object-inspect/test/circular.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								qwen/nodejs/node_modules/object-inspect/test/circular.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
var inspect = require('../');
 | 
			
		||||
var test = require('tape');
 | 
			
		||||
 | 
			
		||||
test('circular', function (t) {
 | 
			
		||||
    t.plan(2);
 | 
			
		||||
    var obj = { a: 1, b: [3, 4] };
 | 
			
		||||
    obj.c = obj;
 | 
			
		||||
    t.equal(inspect(obj), '{ a: 1, b: [ 3, 4 ], c: [Circular] }');
 | 
			
		||||
 | 
			
		||||
    var double = {};
 | 
			
		||||
    double.a = [double];
 | 
			
		||||
    double.b = {};
 | 
			
		||||
    double.b.inner = double.b;
 | 
			
		||||
    double.b.obj = double;
 | 
			
		||||
    t.equal(inspect(double), '{ a: [ [Circular] ], b: { inner: [Circular], obj: [Circular] } }');
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										12
									
								
								qwen/nodejs/node_modules/object-inspect/test/deep.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								qwen/nodejs/node_modules/object-inspect/test/deep.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
var inspect = require('../');
 | 
			
		||||
var test = require('tape');
 | 
			
		||||
 | 
			
		||||
test('deep', function (t) {
 | 
			
		||||
    t.plan(4);
 | 
			
		||||
    var obj = [[[[[[500]]]]]];
 | 
			
		||||
    t.equal(inspect(obj), '[ [ [ [ [ [Array] ] ] ] ] ]');
 | 
			
		||||
    t.equal(inspect(obj, { depth: 4 }), '[ [ [ [ [Array] ] ] ] ]');
 | 
			
		||||
    t.equal(inspect(obj, { depth: 2 }), '[ [ [Array] ] ]');
 | 
			
		||||
 | 
			
		||||
    t.equal(inspect([[[{ a: 1 }]]], { depth: 3 }), '[ [ [ [Object] ] ] ]');
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										53
									
								
								qwen/nodejs/node_modules/object-inspect/test/element.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								qwen/nodejs/node_modules/object-inspect/test/element.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
var inspect = require('../');
 | 
			
		||||
var test = require('tape');
 | 
			
		||||
 | 
			
		||||
test('element', function (t) {
 | 
			
		||||
    t.plan(3);
 | 
			
		||||
    var elem = {
 | 
			
		||||
        nodeName: 'div',
 | 
			
		||||
        attributes: [{ name: 'class', value: 'row' }],
 | 
			
		||||
        getAttribute: function (key) { return key; },
 | 
			
		||||
        childNodes: []
 | 
			
		||||
    };
 | 
			
		||||
    var obj = [1, elem, 3];
 | 
			
		||||
    t.deepEqual(inspect(obj), '[ 1, <div class="row"></div>, 3 ]');
 | 
			
		||||
    t.deepEqual(inspect(obj, { quoteStyle: 'single' }), "[ 1, <div class='row'></div>, 3 ]");
 | 
			
		||||
    t.deepEqual(inspect(obj, { quoteStyle: 'double' }), '[ 1, <div class="row"></div>, 3 ]');
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('element no attr', function (t) {
 | 
			
		||||
    t.plan(1);
 | 
			
		||||
    var elem = {
 | 
			
		||||
        nodeName: 'div',
 | 
			
		||||
        getAttribute: function (key) { return key; },
 | 
			
		||||
        childNodes: []
 | 
			
		||||
    };
 | 
			
		||||
    var obj = [1, elem, 3];
 | 
			
		||||
    t.deepEqual(inspect(obj), '[ 1, <div></div>, 3 ]');
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('element with contents', function (t) {
 | 
			
		||||
    t.plan(1);
 | 
			
		||||
    var elem = {
 | 
			
		||||
        nodeName: 'div',
 | 
			
		||||
        getAttribute: function (key) { return key; },
 | 
			
		||||
        childNodes: [{ nodeName: 'b' }]
 | 
			
		||||
    };
 | 
			
		||||
    var obj = [1, elem, 3];
 | 
			
		||||
    t.deepEqual(inspect(obj), '[ 1, <div>...</div>, 3 ]');
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('element instance', function (t) {
 | 
			
		||||
    t.plan(1);
 | 
			
		||||
    var h = global.HTMLElement;
 | 
			
		||||
    global.HTMLElement = function (name, attr) {
 | 
			
		||||
        this.nodeName = name;
 | 
			
		||||
        this.attributes = attr;
 | 
			
		||||
    };
 | 
			
		||||
    global.HTMLElement.prototype.getAttribute = function () {};
 | 
			
		||||
 | 
			
		||||
    var elem = new global.HTMLElement('div', []);
 | 
			
		||||
    var obj = [1, elem, 3];
 | 
			
		||||
    t.deepEqual(inspect(obj), '[ 1, <div></div>, 3 ]');
 | 
			
		||||
    global.HTMLElement = h;
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										48
									
								
								qwen/nodejs/node_modules/object-inspect/test/err.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								qwen/nodejs/node_modules/object-inspect/test/err.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
			
		||||
var test = require('tape');
 | 
			
		||||
var ErrorWithCause = require('error-cause/Error');
 | 
			
		||||
 | 
			
		||||
var inspect = require('../');
 | 
			
		||||
 | 
			
		||||
test('type error', function (t) {
 | 
			
		||||
    t.plan(1);
 | 
			
		||||
    var aerr = new TypeError();
 | 
			
		||||
    aerr.foo = 555;
 | 
			
		||||
    aerr.bar = [1, 2, 3];
 | 
			
		||||
 | 
			
		||||
    var berr = new TypeError('tuv');
 | 
			
		||||
    berr.baz = 555;
 | 
			
		||||
 | 
			
		||||
    var cerr = new SyntaxError();
 | 
			
		||||
    cerr.message = 'whoa';
 | 
			
		||||
    cerr['a-b'] = 5;
 | 
			
		||||
 | 
			
		||||
    var withCause = new ErrorWithCause('foo', { cause: 'bar' });
 | 
			
		||||
    var withCausePlus = new ErrorWithCause('foo', { cause: 'bar' });
 | 
			
		||||
    withCausePlus.foo = 'bar';
 | 
			
		||||
    var withUndefinedCause = new ErrorWithCause('foo', { cause: undefined });
 | 
			
		||||
    var withEnumerableCause = new Error('foo');
 | 
			
		||||
    withEnumerableCause.cause = 'bar';
 | 
			
		||||
 | 
			
		||||
    var obj = [
 | 
			
		||||
        new TypeError(),
 | 
			
		||||
        new TypeError('xxx'),
 | 
			
		||||
        aerr,
 | 
			
		||||
        berr,
 | 
			
		||||
        cerr,
 | 
			
		||||
        withCause,
 | 
			
		||||
        withCausePlus,
 | 
			
		||||
        withUndefinedCause,
 | 
			
		||||
        withEnumerableCause
 | 
			
		||||
    ];
 | 
			
		||||
    t.equal(inspect(obj), '[ ' + [
 | 
			
		||||
        '[TypeError]',
 | 
			
		||||
        '[TypeError: xxx]',
 | 
			
		||||
        '{ [TypeError] foo: 555, bar: [ 1, 2, 3 ] }',
 | 
			
		||||
        '{ [TypeError: tuv] baz: 555 }',
 | 
			
		||||
        '{ [SyntaxError: whoa] message: \'whoa\', \'a-b\': 5 }',
 | 
			
		||||
        'cause' in Error.prototype ? '[Error: foo]' : '{ [Error: foo] [cause]: \'bar\' }',
 | 
			
		||||
        '{ [Error: foo] ' + ('cause' in Error.prototype ? '' : '[cause]: \'bar\', ') + 'foo: \'bar\' }',
 | 
			
		||||
        'cause' in Error.prototype ? '[Error: foo]' : '{ [Error: foo] [cause]: undefined }',
 | 
			
		||||
        '{ [Error: foo] cause: \'bar\' }'
 | 
			
		||||
    ].join(', ') + ' ]');
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										29
									
								
								qwen/nodejs/node_modules/object-inspect/test/fakes.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								qwen/nodejs/node_modules/object-inspect/test/fakes.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
var inspect = require('../');
 | 
			
		||||
var test = require('tape');
 | 
			
		||||
var hasToStringTag = require('has-tostringtag/shams')();
 | 
			
		||||
var forEach = require('for-each');
 | 
			
		||||
 | 
			
		||||
test('fakes', { skip: !hasToStringTag }, function (t) {
 | 
			
		||||
    forEach([
 | 
			
		||||
        'Array',
 | 
			
		||||
        'Boolean',
 | 
			
		||||
        'Date',
 | 
			
		||||
        'Error',
 | 
			
		||||
        'Number',
 | 
			
		||||
        'RegExp',
 | 
			
		||||
        'String'
 | 
			
		||||
    ], function (expected) {
 | 
			
		||||
        var faker = {};
 | 
			
		||||
        faker[Symbol.toStringTag] = expected;
 | 
			
		||||
 | 
			
		||||
        t.equal(
 | 
			
		||||
            inspect(faker),
 | 
			
		||||
            '{ [Symbol(Symbol.toStringTag)]: \'' + expected + '\' }',
 | 
			
		||||
            'faker masquerading as ' + expected + ' is not shown as one'
 | 
			
		||||
        );
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										76
									
								
								qwen/nodejs/node_modules/object-inspect/test/fn.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								qwen/nodejs/node_modules/object-inspect/test/fn.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,76 @@
 | 
			
		||||
var inspect = require('../');
 | 
			
		||||
var test = require('tape');
 | 
			
		||||
var arrow = require('make-arrow-function')();
 | 
			
		||||
var functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames();
 | 
			
		||||
 | 
			
		||||
test('function', function (t) {
 | 
			
		||||
    t.plan(1);
 | 
			
		||||
    var obj = [1, 2, function f(n) { return n; }, 4];
 | 
			
		||||
    t.equal(inspect(obj), '[ 1, 2, [Function: f], 4 ]');
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('function name', function (t) {
 | 
			
		||||
    t.plan(1);
 | 
			
		||||
    var f = (function () {
 | 
			
		||||
        return function () {};
 | 
			
		||||
    }());
 | 
			
		||||
    f.toString = function toStr() { return 'function xxx () {}'; };
 | 
			
		||||
    var obj = [1, 2, f, 4];
 | 
			
		||||
    t.equal(inspect(obj), '[ 1, 2, [Function (anonymous)] { toString: [Function: toStr] }, 4 ]');
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('anon function', function (t) {
 | 
			
		||||
    var f = (function () {
 | 
			
		||||
        return function () {};
 | 
			
		||||
    }());
 | 
			
		||||
    var obj = [1, 2, f, 4];
 | 
			
		||||
    t.equal(inspect(obj), '[ 1, 2, [Function (anonymous)], 4 ]');
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('arrow function', { skip: !arrow }, function (t) {
 | 
			
		||||
    t.equal(inspect(arrow), '[Function (anonymous)]');
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('truly nameless function', { skip: !arrow || !functionsHaveConfigurableNames }, function (t) {
 | 
			
		||||
    function f() {}
 | 
			
		||||
    Object.defineProperty(f, 'name', { value: false });
 | 
			
		||||
    t.equal(f.name, false);
 | 
			
		||||
    t.equal(
 | 
			
		||||
        inspect(f),
 | 
			
		||||
        '[Function: f]',
 | 
			
		||||
        'named function with falsy `.name` does not hide its original name'
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    function g() {}
 | 
			
		||||
    Object.defineProperty(g, 'name', { value: true });
 | 
			
		||||
    t.equal(g.name, true);
 | 
			
		||||
    t.equal(
 | 
			
		||||
        inspect(g),
 | 
			
		||||
        '[Function: true]',
 | 
			
		||||
        'named function with truthy `.name` hides its original name'
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    var anon = function () {}; // eslint-disable-line func-style
 | 
			
		||||
    Object.defineProperty(anon, 'name', { value: null });
 | 
			
		||||
    t.equal(anon.name, null);
 | 
			
		||||
    t.equal(
 | 
			
		||||
        inspect(anon),
 | 
			
		||||
        '[Function (anonymous)]',
 | 
			
		||||
        'anon function with falsy `.name` does not hide its anonymity'
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    var anon2 = function () {}; // eslint-disable-line func-style
 | 
			
		||||
    Object.defineProperty(anon2, 'name', { value: 1 });
 | 
			
		||||
    t.equal(anon2.name, 1);
 | 
			
		||||
    t.equal(
 | 
			
		||||
        inspect(anon2),
 | 
			
		||||
        '[Function: 1]',
 | 
			
		||||
        'anon function with truthy `.name` hides its anonymity'
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										17
									
								
								qwen/nodejs/node_modules/object-inspect/test/global.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								qwen/nodejs/node_modules/object-inspect/test/global.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
var inspect = require('../');
 | 
			
		||||
 | 
			
		||||
var test = require('tape');
 | 
			
		||||
var globalThis = require('globalthis')();
 | 
			
		||||
 | 
			
		||||
test('global object', function (t) {
 | 
			
		||||
    /* eslint-env browser */
 | 
			
		||||
    var expected = typeof window === 'undefined' ? 'globalThis' : 'Window';
 | 
			
		||||
    t.equal(
 | 
			
		||||
        inspect([globalThis]),
 | 
			
		||||
        '[ { [object ' + expected + '] } ]'
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										15
									
								
								qwen/nodejs/node_modules/object-inspect/test/has.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								qwen/nodejs/node_modules/object-inspect/test/has.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
var inspect = require('../');
 | 
			
		||||
var test = require('tape');
 | 
			
		||||
var mockProperty = require('mock-property');
 | 
			
		||||
 | 
			
		||||
test('when Object#hasOwnProperty is deleted', function (t) {
 | 
			
		||||
    t.plan(1);
 | 
			
		||||
    var arr = [1, , 3]; // eslint-disable-line no-sparse-arrays
 | 
			
		||||
 | 
			
		||||
    t.teardown(mockProperty(Array.prototype, 1, { value: 2 })); // this is needed to account for "in" vs "hasOwnProperty"
 | 
			
		||||
    t.teardown(mockProperty(Object.prototype, 'hasOwnProperty', { 'delete': true }));
 | 
			
		||||
 | 
			
		||||
    t.equal(inspect(arr), '[ 1, , 3 ]');
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										15
									
								
								qwen/nodejs/node_modules/object-inspect/test/holes.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								qwen/nodejs/node_modules/object-inspect/test/holes.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
			
		||||
var test = require('tape');
 | 
			
		||||
var inspect = require('../');
 | 
			
		||||
 | 
			
		||||
var xs = ['a', 'b'];
 | 
			
		||||
xs[5] = 'f';
 | 
			
		||||
xs[7] = 'j';
 | 
			
		||||
xs[8] = 'k';
 | 
			
		||||
 | 
			
		||||
test('holes', function (t) {
 | 
			
		||||
    t.plan(1);
 | 
			
		||||
    t.equal(
 | 
			
		||||
        inspect(xs),
 | 
			
		||||
        "[ 'a', 'b', , , , 'f', , 'j', 'k' ]"
 | 
			
		||||
    );
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										271
									
								
								qwen/nodejs/node_modules/object-inspect/test/indent-option.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										271
									
								
								qwen/nodejs/node_modules/object-inspect/test/indent-option.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,271 @@
 | 
			
		||||
var test = require('tape');
 | 
			
		||||
var forEach = require('for-each');
 | 
			
		||||
 | 
			
		||||
var inspect = require('../');
 | 
			
		||||
 | 
			
		||||
test('bad indent options', function (t) {
 | 
			
		||||
    forEach([
 | 
			
		||||
        undefined,
 | 
			
		||||
        true,
 | 
			
		||||
        false,
 | 
			
		||||
        -1,
 | 
			
		||||
        1.2,
 | 
			
		||||
        Infinity,
 | 
			
		||||
        -Infinity,
 | 
			
		||||
        NaN
 | 
			
		||||
    ], function (indent) {
 | 
			
		||||
        t['throws'](
 | 
			
		||||
            function () { inspect('', { indent: indent }); },
 | 
			
		||||
            TypeError,
 | 
			
		||||
            inspect(indent) + ' is invalid'
 | 
			
		||||
        );
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('simple object with indent', function (t) {
 | 
			
		||||
    t.plan(2);
 | 
			
		||||
 | 
			
		||||
    var obj = { a: 1, b: 2 };
 | 
			
		||||
 | 
			
		||||
    var expectedSpaces = [
 | 
			
		||||
        '{',
 | 
			
		||||
        '  a: 1,',
 | 
			
		||||
        '  b: 2',
 | 
			
		||||
        '}'
 | 
			
		||||
    ].join('\n');
 | 
			
		||||
    var expectedTabs = [
 | 
			
		||||
        '{',
 | 
			
		||||
        '	a: 1,',
 | 
			
		||||
        '	b: 2',
 | 
			
		||||
        '}'
 | 
			
		||||
    ].join('\n');
 | 
			
		||||
 | 
			
		||||
    t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two');
 | 
			
		||||
    t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs');
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('two deep object with indent', function (t) {
 | 
			
		||||
    t.plan(2);
 | 
			
		||||
 | 
			
		||||
    var obj = { a: 1, b: { c: 3, d: 4 } };
 | 
			
		||||
 | 
			
		||||
    var expectedSpaces = [
 | 
			
		||||
        '{',
 | 
			
		||||
        '  a: 1,',
 | 
			
		||||
        '  b: {',
 | 
			
		||||
        '    c: 3,',
 | 
			
		||||
        '    d: 4',
 | 
			
		||||
        '  }',
 | 
			
		||||
        '}'
 | 
			
		||||
    ].join('\n');
 | 
			
		||||
    var expectedTabs = [
 | 
			
		||||
        '{',
 | 
			
		||||
        '	a: 1,',
 | 
			
		||||
        '	b: {',
 | 
			
		||||
        '		c: 3,',
 | 
			
		||||
        '		d: 4',
 | 
			
		||||
        '	}',
 | 
			
		||||
        '}'
 | 
			
		||||
    ].join('\n');
 | 
			
		||||
 | 
			
		||||
    t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two');
 | 
			
		||||
    t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs');
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('simple array with all single line elements', function (t) {
 | 
			
		||||
    t.plan(2);
 | 
			
		||||
 | 
			
		||||
    var obj = [1, 2, 3, 'asdf\nsdf'];
 | 
			
		||||
 | 
			
		||||
    var expected = '[ 1, 2, 3, \'asdf\\nsdf\' ]';
 | 
			
		||||
 | 
			
		||||
    t.equal(inspect(obj, { indent: 2 }), expected, 'two');
 | 
			
		||||
    t.equal(inspect(obj, { indent: '\t' }), expected, 'tabs');
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('array with complex elements', function (t) {
 | 
			
		||||
    t.plan(2);
 | 
			
		||||
 | 
			
		||||
    var obj = [1, { a: 1, b: { c: 1 } }, 'asdf\nsdf'];
 | 
			
		||||
 | 
			
		||||
    var expectedSpaces = [
 | 
			
		||||
        '[',
 | 
			
		||||
        '  1,',
 | 
			
		||||
        '  {',
 | 
			
		||||
        '    a: 1,',
 | 
			
		||||
        '    b: {',
 | 
			
		||||
        '      c: 1',
 | 
			
		||||
        '    }',
 | 
			
		||||
        '  },',
 | 
			
		||||
        '  \'asdf\\nsdf\'',
 | 
			
		||||
        ']'
 | 
			
		||||
    ].join('\n');
 | 
			
		||||
    var expectedTabs = [
 | 
			
		||||
        '[',
 | 
			
		||||
        '	1,',
 | 
			
		||||
        '	{',
 | 
			
		||||
        '		a: 1,',
 | 
			
		||||
        '		b: {',
 | 
			
		||||
        '			c: 1',
 | 
			
		||||
        '		}',
 | 
			
		||||
        '	},',
 | 
			
		||||
        '	\'asdf\\nsdf\'',
 | 
			
		||||
        ']'
 | 
			
		||||
    ].join('\n');
 | 
			
		||||
 | 
			
		||||
    t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two');
 | 
			
		||||
    t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs');
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('values', function (t) {
 | 
			
		||||
    t.plan(2);
 | 
			
		||||
    var obj = [{}, [], { 'a-b': 5 }];
 | 
			
		||||
 | 
			
		||||
    var expectedSpaces = [
 | 
			
		||||
        '[',
 | 
			
		||||
        '  {},',
 | 
			
		||||
        '  [],',
 | 
			
		||||
        '  {',
 | 
			
		||||
        '    \'a-b\': 5',
 | 
			
		||||
        '  }',
 | 
			
		||||
        ']'
 | 
			
		||||
    ].join('\n');
 | 
			
		||||
    var expectedTabs = [
 | 
			
		||||
        '[',
 | 
			
		||||
        '	{},',
 | 
			
		||||
        '	[],',
 | 
			
		||||
        '	{',
 | 
			
		||||
        '		\'a-b\': 5',
 | 
			
		||||
        '	}',
 | 
			
		||||
        ']'
 | 
			
		||||
    ].join('\n');
 | 
			
		||||
 | 
			
		||||
    t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two');
 | 
			
		||||
    t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs');
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('Map', { skip: typeof Map !== 'function' }, function (t) {
 | 
			
		||||
    var map = new Map();
 | 
			
		||||
    map.set({ a: 1 }, ['b']);
 | 
			
		||||
    map.set(3, NaN);
 | 
			
		||||
 | 
			
		||||
    var expectedStringSpaces = [
 | 
			
		||||
        'Map (2) {',
 | 
			
		||||
        '  { a: 1 } => [ \'b\' ],',
 | 
			
		||||
        '  3 => NaN',
 | 
			
		||||
        '}'
 | 
			
		||||
    ].join('\n');
 | 
			
		||||
    var expectedStringTabs = [
 | 
			
		||||
        'Map (2) {',
 | 
			
		||||
        '	{ a: 1 } => [ \'b\' ],',
 | 
			
		||||
        '	3 => NaN',
 | 
			
		||||
        '}'
 | 
			
		||||
    ].join('\n');
 | 
			
		||||
    var expectedStringTabsDoubleQuotes = [
 | 
			
		||||
        'Map (2) {',
 | 
			
		||||
        '	{ a: 1 } => [ "b" ],',
 | 
			
		||||
        '	3 => NaN',
 | 
			
		||||
        '}'
 | 
			
		||||
    ].join('\n');
 | 
			
		||||
 | 
			
		||||
    t.equal(
 | 
			
		||||
        inspect(map, { indent: 2 }),
 | 
			
		||||
        expectedStringSpaces,
 | 
			
		||||
        'Map keys are not indented (two)'
 | 
			
		||||
    );
 | 
			
		||||
    t.equal(
 | 
			
		||||
        inspect(map, { indent: '\t' }),
 | 
			
		||||
        expectedStringTabs,
 | 
			
		||||
        'Map keys are not indented (tabs)'
 | 
			
		||||
    );
 | 
			
		||||
    t.equal(
 | 
			
		||||
        inspect(map, { indent: '\t', quoteStyle: 'double' }),
 | 
			
		||||
        expectedStringTabsDoubleQuotes,
 | 
			
		||||
        'Map keys are not indented (tabs + double quotes)'
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    t.equal(inspect(new Map(), { indent: 2 }), 'Map (0) {}', 'empty Map should show as empty (two)');
 | 
			
		||||
    t.equal(inspect(new Map(), { indent: '\t' }), 'Map (0) {}', 'empty Map should show as empty (tabs)');
 | 
			
		||||
 | 
			
		||||
    var nestedMap = new Map();
 | 
			
		||||
    nestedMap.set(nestedMap, map);
 | 
			
		||||
    var expectedNestedSpaces = [
 | 
			
		||||
        'Map (1) {',
 | 
			
		||||
        '  [Circular] => Map (2) {',
 | 
			
		||||
        '    { a: 1 } => [ \'b\' ],',
 | 
			
		||||
        '    3 => NaN',
 | 
			
		||||
        '  }',
 | 
			
		||||
        '}'
 | 
			
		||||
    ].join('\n');
 | 
			
		||||
    var expectedNestedTabs = [
 | 
			
		||||
        'Map (1) {',
 | 
			
		||||
        '	[Circular] => Map (2) {',
 | 
			
		||||
        '		{ a: 1 } => [ \'b\' ],',
 | 
			
		||||
        '		3 => NaN',
 | 
			
		||||
        '	}',
 | 
			
		||||
        '}'
 | 
			
		||||
    ].join('\n');
 | 
			
		||||
    t.equal(inspect(nestedMap, { indent: 2 }), expectedNestedSpaces, 'Map containing a Map should work (two)');
 | 
			
		||||
    t.equal(inspect(nestedMap, { indent: '\t' }), expectedNestedTabs, 'Map containing a Map should work (tabs)');
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('Set', { skip: typeof Set !== 'function' }, function (t) {
 | 
			
		||||
    var set = new Set();
 | 
			
		||||
    set.add({ a: 1 });
 | 
			
		||||
    set.add(['b']);
 | 
			
		||||
    var expectedStringSpaces = [
 | 
			
		||||
        'Set (2) {',
 | 
			
		||||
        '  {',
 | 
			
		||||
        '    a: 1',
 | 
			
		||||
        '  },',
 | 
			
		||||
        '  [ \'b\' ]',
 | 
			
		||||
        '}'
 | 
			
		||||
    ].join('\n');
 | 
			
		||||
    var expectedStringTabs = [
 | 
			
		||||
        'Set (2) {',
 | 
			
		||||
        '	{',
 | 
			
		||||
        '		a: 1',
 | 
			
		||||
        '	},',
 | 
			
		||||
        '	[ \'b\' ]',
 | 
			
		||||
        '}'
 | 
			
		||||
    ].join('\n');
 | 
			
		||||
    t.equal(inspect(set, { indent: 2 }), expectedStringSpaces, 'new Set([{ a: 1 }, ["b"]]) should show size and contents (two)');
 | 
			
		||||
    t.equal(inspect(set, { indent: '\t' }), expectedStringTabs, 'new Set([{ a: 1 }, ["b"]]) should show size and contents (tabs)');
 | 
			
		||||
 | 
			
		||||
    t.equal(inspect(new Set(), { indent: 2 }), 'Set (0) {}', 'empty Set should show as empty (two)');
 | 
			
		||||
    t.equal(inspect(new Set(), { indent: '\t' }), 'Set (0) {}', 'empty Set should show as empty (tabs)');
 | 
			
		||||
 | 
			
		||||
    var nestedSet = new Set();
 | 
			
		||||
    nestedSet.add(set);
 | 
			
		||||
    nestedSet.add(nestedSet);
 | 
			
		||||
    var expectedNestedSpaces = [
 | 
			
		||||
        'Set (2) {',
 | 
			
		||||
        '  Set (2) {',
 | 
			
		||||
        '    {',
 | 
			
		||||
        '      a: 1',
 | 
			
		||||
        '    },',
 | 
			
		||||
        '    [ \'b\' ]',
 | 
			
		||||
        '  },',
 | 
			
		||||
        '  [Circular]',
 | 
			
		||||
        '}'
 | 
			
		||||
    ].join('\n');
 | 
			
		||||
    var expectedNestedTabs = [
 | 
			
		||||
        'Set (2) {',
 | 
			
		||||
        '	Set (2) {',
 | 
			
		||||
        '		{',
 | 
			
		||||
        '			a: 1',
 | 
			
		||||
        '		},',
 | 
			
		||||
        '		[ \'b\' ]',
 | 
			
		||||
        '	},',
 | 
			
		||||
        '	[Circular]',
 | 
			
		||||
        '}'
 | 
			
		||||
    ].join('\n');
 | 
			
		||||
    t.equal(inspect(nestedSet, { indent: 2 }), expectedNestedSpaces, 'Set containing a Set should work (two)');
 | 
			
		||||
    t.equal(inspect(nestedSet, { indent: '\t' }), expectedNestedTabs, 'Set containing a Set should work (tabs)');
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										139
									
								
								qwen/nodejs/node_modules/object-inspect/test/inspect.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										139
									
								
								qwen/nodejs/node_modules/object-inspect/test/inspect.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,139 @@
 | 
			
		||||
var test = require('tape');
 | 
			
		||||
var hasSymbols = require('has-symbols/shams')();
 | 
			
		||||
var utilInspect = require('../util.inspect');
 | 
			
		||||
var repeat = require('string.prototype.repeat');
 | 
			
		||||
 | 
			
		||||
var inspect = require('..');
 | 
			
		||||
 | 
			
		||||
test('inspect', function (t) {
 | 
			
		||||
    t.plan(5);
 | 
			
		||||
 | 
			
		||||
    var obj = [{ inspect: function xyzInspect() { return '!XYZ¡'; } }, []];
 | 
			
		||||
    var stringResult = '[ !XYZ¡, [] ]';
 | 
			
		||||
    var falseResult = '[ { inspect: [Function: xyzInspect] }, [] ]';
 | 
			
		||||
 | 
			
		||||
    t.equal(inspect(obj), stringResult);
 | 
			
		||||
    t.equal(inspect(obj, { customInspect: true }), stringResult);
 | 
			
		||||
    t.equal(inspect(obj, { customInspect: 'symbol' }), falseResult);
 | 
			
		||||
    t.equal(inspect(obj, { customInspect: false }), falseResult);
 | 
			
		||||
    t['throws'](
 | 
			
		||||
        function () { inspect(obj, { customInspect: 'not a boolean or "symbol"' }); },
 | 
			
		||||
        TypeError,
 | 
			
		||||
        '`customInspect` must be a boolean or the string "symbol"'
 | 
			
		||||
    );
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('inspect custom symbol', { skip: !hasSymbols || !utilInspect || !utilInspect.custom }, function (t) {
 | 
			
		||||
    t.plan(4);
 | 
			
		||||
 | 
			
		||||
    var obj = { inspect: function stringInspect() { return 'string'; } };
 | 
			
		||||
    obj[utilInspect.custom] = function custom() { return 'symbol'; };
 | 
			
		||||
 | 
			
		||||
    var symbolResult = '[ symbol, [] ]';
 | 
			
		||||
    var stringResult = '[ string, [] ]';
 | 
			
		||||
    var falseResult = '[ { inspect: [Function: stringInspect]' + (utilInspect.custom ? ', [' + inspect(utilInspect.custom) + ']: [Function: custom]' : '') + ' }, [] ]';
 | 
			
		||||
 | 
			
		||||
    var symbolStringFallback = utilInspect.custom ? symbolResult : stringResult;
 | 
			
		||||
    var symbolFalseFallback = utilInspect.custom ? symbolResult : falseResult;
 | 
			
		||||
 | 
			
		||||
    t.equal(inspect([obj, []]), symbolStringFallback);
 | 
			
		||||
    t.equal(inspect([obj, []], { customInspect: true }), symbolStringFallback);
 | 
			
		||||
    t.equal(inspect([obj, []], { customInspect: 'symbol' }), symbolFalseFallback);
 | 
			
		||||
    t.equal(inspect([obj, []], { customInspect: false }), falseResult);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('symbols', { skip: !hasSymbols }, function (t) {
 | 
			
		||||
    t.plan(2);
 | 
			
		||||
 | 
			
		||||
    var obj = { a: 1 };
 | 
			
		||||
    obj[Symbol('test')] = 2;
 | 
			
		||||
    obj[Symbol.iterator] = 3;
 | 
			
		||||
    Object.defineProperty(obj, Symbol('non-enum'), {
 | 
			
		||||
        enumerable: false,
 | 
			
		||||
        value: 4
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    if (typeof Symbol.iterator === 'symbol') {
 | 
			
		||||
        t.equal(inspect(obj), '{ a: 1, [Symbol(test)]: 2, [Symbol(Symbol.iterator)]: 3 }', 'object with symbols');
 | 
			
		||||
        t.equal(inspect([obj, []]), '[ { a: 1, [Symbol(test)]: 2, [Symbol(Symbol.iterator)]: 3 }, [] ]', 'object with symbols in array');
 | 
			
		||||
    } else {
 | 
			
		||||
        // symbol sham key ordering is unreliable
 | 
			
		||||
        t.match(
 | 
			
		||||
            inspect(obj),
 | 
			
		||||
            /^(?:{ a: 1, \[Symbol\(test\)\]: 2, \[Symbol\(Symbol.iterator\)\]: 3 }|{ a: 1, \[Symbol\(Symbol.iterator\)\]: 3, \[Symbol\(test\)\]: 2 })$/,
 | 
			
		||||
            'object with symbols (nondeterministic symbol sham key ordering)'
 | 
			
		||||
        );
 | 
			
		||||
        t.match(
 | 
			
		||||
            inspect([obj, []]),
 | 
			
		||||
            /^\[ (?:{ a: 1, \[Symbol\(test\)\]: 2, \[Symbol\(Symbol.iterator\)\]: 3 }|{ a: 1, \[Symbol\(Symbol.iterator\)\]: 3, \[Symbol\(test\)\]: 2 }), \[\] \]$/,
 | 
			
		||||
            'object with symbols in array (nondeterministic symbol sham key ordering)'
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('maxStringLength', function (t) {
 | 
			
		||||
    t['throws'](
 | 
			
		||||
        function () { inspect('', { maxStringLength: -1 }); },
 | 
			
		||||
        TypeError,
 | 
			
		||||
        'maxStringLength must be >= 0, or Infinity, not negative'
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    var str = repeat('a', 1e8);
 | 
			
		||||
 | 
			
		||||
    t.equal(
 | 
			
		||||
        inspect([str], { maxStringLength: 10 }),
 | 
			
		||||
        '[ \'aaaaaaaaaa\'... 99999990 more characters ]',
 | 
			
		||||
        'maxStringLength option limits output'
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    t.equal(
 | 
			
		||||
        inspect(['f'], { maxStringLength: null }),
 | 
			
		||||
        '[ \'\'... 1 more character ]',
 | 
			
		||||
        'maxStringLength option accepts `null`'
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    t.equal(
 | 
			
		||||
        inspect([str], { maxStringLength: Infinity }),
 | 
			
		||||
        '[ \'' + str + '\' ]',
 | 
			
		||||
        'maxStringLength option accepts ∞'
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('inspect options', { skip: !utilInspect.custom }, function (t) {
 | 
			
		||||
    var obj = {};
 | 
			
		||||
    obj[utilInspect.custom] = function () {
 | 
			
		||||
        return JSON.stringify(arguments);
 | 
			
		||||
    };
 | 
			
		||||
    t.equal(
 | 
			
		||||
        inspect(obj),
 | 
			
		||||
        utilInspect(obj, { depth: 5 }),
 | 
			
		||||
        'custom symbols will use node\'s inspect'
 | 
			
		||||
    );
 | 
			
		||||
    t.equal(
 | 
			
		||||
        inspect(obj, { depth: 2 }),
 | 
			
		||||
        utilInspect(obj, { depth: 2 }),
 | 
			
		||||
        'a reduced depth will be passed to node\'s inspect'
 | 
			
		||||
    );
 | 
			
		||||
    t.equal(
 | 
			
		||||
        inspect({ d1: obj }, { depth: 3 }),
 | 
			
		||||
        '{ d1: ' + utilInspect(obj, { depth: 2 }) + ' }',
 | 
			
		||||
        'deep objects will receive a reduced depth'
 | 
			
		||||
    );
 | 
			
		||||
    t.equal(
 | 
			
		||||
        inspect({ d1: obj }, { depth: 1 }),
 | 
			
		||||
        '{ d1: [Object] }',
 | 
			
		||||
        'unlike nodejs inspect, customInspect will not be used once the depth is exceeded.'
 | 
			
		||||
    );
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('inspect URL', { skip: typeof URL === 'undefined' }, function (t) {
 | 
			
		||||
    t.match(
 | 
			
		||||
        inspect(new URL('https://nodejs.org')),
 | 
			
		||||
        /nodejs\.org/, // Different environments stringify it differently
 | 
			
		||||
        'url can be inspected'
 | 
			
		||||
    );
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										12
									
								
								qwen/nodejs/node_modules/object-inspect/test/lowbyte.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								qwen/nodejs/node_modules/object-inspect/test/lowbyte.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
var test = require('tape');
 | 
			
		||||
var inspect = require('../');
 | 
			
		||||
 | 
			
		||||
var obj = { x: 'a\r\nb', y: '\x05! \x1f \x12' };
 | 
			
		||||
 | 
			
		||||
test('interpolate low bytes', function (t) {
 | 
			
		||||
    t.plan(1);
 | 
			
		||||
    t.equal(
 | 
			
		||||
        inspect(obj),
 | 
			
		||||
        "{ x: 'a\\r\\nb', y: '\\x05! \\x1F \\x12' }"
 | 
			
		||||
    );
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										58
									
								
								qwen/nodejs/node_modules/object-inspect/test/number.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								qwen/nodejs/node_modules/object-inspect/test/number.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
var test = require('tape');
 | 
			
		||||
var v = require('es-value-fixtures');
 | 
			
		||||
var forEach = require('for-each');
 | 
			
		||||
 | 
			
		||||
var inspect = require('../');
 | 
			
		||||
 | 
			
		||||
test('negative zero', function (t) {
 | 
			
		||||
    t.equal(inspect(0), '0', 'inspect(0) === "0"');
 | 
			
		||||
    t.equal(inspect(Object(0)), 'Object(0)', 'inspect(Object(0)) === "Object(0)"');
 | 
			
		||||
 | 
			
		||||
    t.equal(inspect(-0), '-0', 'inspect(-0) === "-0"');
 | 
			
		||||
    t.equal(inspect(Object(-0)), 'Object(-0)', 'inspect(Object(-0)) === "Object(-0)"');
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('numericSeparator', function (t) {
 | 
			
		||||
    forEach(v.nonBooleans, function (nonBoolean) {
 | 
			
		||||
        t['throws'](
 | 
			
		||||
            function () { inspect(true, { numericSeparator: nonBoolean }); },
 | 
			
		||||
            TypeError,
 | 
			
		||||
            inspect(nonBoolean) + ' is not a boolean'
 | 
			
		||||
        );
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    t.test('3 digit numbers', function (st) {
 | 
			
		||||
        var failed = false;
 | 
			
		||||
        for (var i = -999; i < 1000; i += 1) {
 | 
			
		||||
            var actual = inspect(i);
 | 
			
		||||
            var actualSepNo = inspect(i, { numericSeparator: false });
 | 
			
		||||
            var actualSepYes = inspect(i, { numericSeparator: true });
 | 
			
		||||
            var expected = String(i);
 | 
			
		||||
            if (actual !== expected || actualSepNo !== expected || actualSepYes !== expected) {
 | 
			
		||||
                failed = true;
 | 
			
		||||
                t.equal(actual, expected);
 | 
			
		||||
                t.equal(actualSepNo, expected);
 | 
			
		||||
                t.equal(actualSepYes, expected);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        st.notOk(failed, 'all 3 digit numbers passed');
 | 
			
		||||
 | 
			
		||||
        st.end();
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    t.equal(inspect(1e3), '1000', '1000');
 | 
			
		||||
    t.equal(inspect(1e3, { numericSeparator: false }), '1000', '1000, numericSeparator false');
 | 
			
		||||
    t.equal(inspect(1e3, { numericSeparator: true }), '1_000', '1000, numericSeparator true');
 | 
			
		||||
    t.equal(inspect(-1e3), '-1000', '-1000');
 | 
			
		||||
    t.equal(inspect(-1e3, { numericSeparator: false }), '-1000', '-1000, numericSeparator false');
 | 
			
		||||
    t.equal(inspect(-1e3, { numericSeparator: true }), '-1_000', '-1000, numericSeparator true');
 | 
			
		||||
 | 
			
		||||
    t.equal(inspect(1234.5678, { numericSeparator: true }), '1_234.567_8', 'fractional numbers get separators');
 | 
			
		||||
    t.equal(inspect(1234.56789, { numericSeparator: true }), '1_234.567_89', 'fractional numbers get separators');
 | 
			
		||||
    t.equal(inspect(1234.567891, { numericSeparator: true }), '1_234.567_891', 'fractional numbers get separators');
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										26
									
								
								qwen/nodejs/node_modules/object-inspect/test/quoteStyle.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								qwen/nodejs/node_modules/object-inspect/test/quoteStyle.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
var inspect = require('../');
 | 
			
		||||
var test = require('tape');
 | 
			
		||||
 | 
			
		||||
test('quoteStyle option', function (t) {
 | 
			
		||||
    t['throws'](function () { inspect(null, { quoteStyle: false }); }, 'false is not a valid value');
 | 
			
		||||
    t['throws'](function () { inspect(null, { quoteStyle: true }); }, 'true is not a valid value');
 | 
			
		||||
    t['throws'](function () { inspect(null, { quoteStyle: '' }); }, '"" is not a valid value');
 | 
			
		||||
    t['throws'](function () { inspect(null, { quoteStyle: {} }); }, '{} is not a valid value');
 | 
			
		||||
    t['throws'](function () { inspect(null, { quoteStyle: [] }); }, '[] is not a valid value');
 | 
			
		||||
    t['throws'](function () { inspect(null, { quoteStyle: 42 }); }, '42 is not a valid value');
 | 
			
		||||
    t['throws'](function () { inspect(null, { quoteStyle: NaN }); }, 'NaN is not a valid value');
 | 
			
		||||
    t['throws'](function () { inspect(null, { quoteStyle: function () {} }); }, 'a function is not a valid value');
 | 
			
		||||
 | 
			
		||||
    t.equal(inspect('"', { quoteStyle: 'single' }), '\'"\'', 'double quote, quoteStyle: "single"');
 | 
			
		||||
    t.equal(inspect('"', { quoteStyle: 'double' }), '"\\""', 'double quote, quoteStyle: "double"');
 | 
			
		||||
 | 
			
		||||
    t.equal(inspect('\'', { quoteStyle: 'single' }), '\'\\\'\'', 'single quote, quoteStyle: "single"');
 | 
			
		||||
    t.equal(inspect('\'', { quoteStyle: 'double' }), '"\'"', 'single quote, quoteStyle: "double"');
 | 
			
		||||
 | 
			
		||||
    t.equal(inspect('`', { quoteStyle: 'single' }), '\'`\'', 'backtick, quoteStyle: "single"');
 | 
			
		||||
    t.equal(inspect('`', { quoteStyle: 'double' }), '"`"', 'backtick, quoteStyle: "double"');
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										40
									
								
								qwen/nodejs/node_modules/object-inspect/test/toStringTag.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								qwen/nodejs/node_modules/object-inspect/test/toStringTag.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
var test = require('tape');
 | 
			
		||||
var hasToStringTag = require('has-tostringtag/shams')();
 | 
			
		||||
 | 
			
		||||
var inspect = require('../');
 | 
			
		||||
 | 
			
		||||
test('Symbol.toStringTag', { skip: !hasToStringTag }, function (t) {
 | 
			
		||||
    t.plan(4);
 | 
			
		||||
 | 
			
		||||
    var obj = { a: 1 };
 | 
			
		||||
    t.equal(inspect(obj), '{ a: 1 }', 'object, no Symbol.toStringTag');
 | 
			
		||||
 | 
			
		||||
    obj[Symbol.toStringTag] = 'foo';
 | 
			
		||||
    t.equal(inspect(obj), '{ a: 1, [Symbol(Symbol.toStringTag)]: \'foo\' }', 'object with Symbol.toStringTag');
 | 
			
		||||
 | 
			
		||||
    t.test('null objects', { skip: 'toString' in { __proto__: null } }, function (st) {
 | 
			
		||||
        st.plan(2);
 | 
			
		||||
 | 
			
		||||
        var dict = { __proto__: null, a: 1 };
 | 
			
		||||
        st.equal(inspect(dict), '[Object: null prototype] { a: 1 }', 'null object with Symbol.toStringTag');
 | 
			
		||||
 | 
			
		||||
        dict[Symbol.toStringTag] = 'Dict';
 | 
			
		||||
        st.equal(inspect(dict), '[Dict: null prototype] { a: 1, [Symbol(Symbol.toStringTag)]: \'Dict\' }', 'null object with Symbol.toStringTag');
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    t.test('instances', function (st) {
 | 
			
		||||
        st.plan(4);
 | 
			
		||||
 | 
			
		||||
        function C() {
 | 
			
		||||
            this.a = 1;
 | 
			
		||||
        }
 | 
			
		||||
        st.equal(Object.prototype.toString.call(new C()), '[object Object]', 'instance, no toStringTag, Object.prototype.toString');
 | 
			
		||||
        st.equal(inspect(new C()), 'C { a: 1 }', 'instance, no toStringTag');
 | 
			
		||||
 | 
			
		||||
        C.prototype[Symbol.toStringTag] = 'Class!';
 | 
			
		||||
        st.equal(Object.prototype.toString.call(new C()), '[object Class!]', 'instance, with toStringTag, Object.prototype.toString');
 | 
			
		||||
        st.equal(inspect(new C()), 'C [Class!] { a: 1 }', 'instance, with toStringTag');
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										12
									
								
								qwen/nodejs/node_modules/object-inspect/test/undef.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								qwen/nodejs/node_modules/object-inspect/test/undef.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
var test = require('tape');
 | 
			
		||||
var inspect = require('../');
 | 
			
		||||
 | 
			
		||||
var obj = { a: 1, b: [3, 4, undefined, null], c: undefined, d: null };
 | 
			
		||||
 | 
			
		||||
test('undef and null', function (t) {
 | 
			
		||||
    t.plan(1);
 | 
			
		||||
    t.equal(
 | 
			
		||||
        inspect(obj),
 | 
			
		||||
        '{ a: 1, b: [ 3, 4, undefined, null ], c: undefined, d: null }'
 | 
			
		||||
    );
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										261
									
								
								qwen/nodejs/node_modules/object-inspect/test/values.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										261
									
								
								qwen/nodejs/node_modules/object-inspect/test/values.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,261 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
var inspect = require('../');
 | 
			
		||||
var test = require('tape');
 | 
			
		||||
var mockProperty = require('mock-property');
 | 
			
		||||
var hasSymbols = require('has-symbols/shams')();
 | 
			
		||||
var hasToStringTag = require('has-tostringtag/shams')();
 | 
			
		||||
var forEach = require('for-each');
 | 
			
		||||
var semver = require('semver');
 | 
			
		||||
 | 
			
		||||
test('values', function (t) {
 | 
			
		||||
    t.plan(1);
 | 
			
		||||
    var obj = [{}, [], { 'a-b': 5 }];
 | 
			
		||||
    t.equal(inspect(obj), '[ {}, [], { \'a-b\': 5 } ]');
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('arrays with properties', function (t) {
 | 
			
		||||
    t.plan(1);
 | 
			
		||||
    var arr = [3];
 | 
			
		||||
    arr.foo = 'bar';
 | 
			
		||||
    var obj = [1, 2, arr];
 | 
			
		||||
    obj.baz = 'quux';
 | 
			
		||||
    obj.index = -1;
 | 
			
		||||
    t.equal(inspect(obj), '[ 1, 2, [ 3, foo: \'bar\' ], baz: \'quux\', index: -1 ]');
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('has', function (t) {
 | 
			
		||||
    t.plan(1);
 | 
			
		||||
    t.teardown(mockProperty(Object.prototype, 'hasOwnProperty', { 'delete': true }));
 | 
			
		||||
 | 
			
		||||
    t.equal(inspect({ a: 1, b: 2 }), '{ a: 1, b: 2 }');
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('indexOf seen', function (t) {
 | 
			
		||||
    t.plan(1);
 | 
			
		||||
    var xs = [1, 2, 3, {}];
 | 
			
		||||
    xs.push(xs);
 | 
			
		||||
 | 
			
		||||
    var seen = [];
 | 
			
		||||
    seen.indexOf = undefined;
 | 
			
		||||
 | 
			
		||||
    t.equal(
 | 
			
		||||
        inspect(xs, {}, 0, seen),
 | 
			
		||||
        '[ 1, 2, 3, {}, [Circular] ]'
 | 
			
		||||
    );
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('seen seen', function (t) {
 | 
			
		||||
    t.plan(1);
 | 
			
		||||
    var xs = [1, 2, 3];
 | 
			
		||||
 | 
			
		||||
    var seen = [xs];
 | 
			
		||||
    seen.indexOf = undefined;
 | 
			
		||||
 | 
			
		||||
    t.equal(
 | 
			
		||||
        inspect(xs, {}, 0, seen),
 | 
			
		||||
        '[Circular]'
 | 
			
		||||
    );
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('seen seen seen', function (t) {
 | 
			
		||||
    t.plan(1);
 | 
			
		||||
    var xs = [1, 2, 3];
 | 
			
		||||
 | 
			
		||||
    var seen = [5, xs];
 | 
			
		||||
    seen.indexOf = undefined;
 | 
			
		||||
 | 
			
		||||
    t.equal(
 | 
			
		||||
        inspect(xs, {}, 0, seen),
 | 
			
		||||
        '[Circular]'
 | 
			
		||||
    );
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('symbols', { skip: !hasSymbols }, function (t) {
 | 
			
		||||
    var sym = Symbol('foo');
 | 
			
		||||
    t.equal(inspect(sym), 'Symbol(foo)', 'Symbol("foo") should be "Symbol(foo)"');
 | 
			
		||||
    if (typeof sym === 'symbol') {
 | 
			
		||||
        // Symbol shams are incapable of differentiating boxed from unboxed symbols
 | 
			
		||||
        t.equal(inspect(Object(sym)), 'Object(Symbol(foo))', 'Object(Symbol("foo")) should be "Object(Symbol(foo))"');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    t.test('toStringTag', { skip: !hasToStringTag }, function (st) {
 | 
			
		||||
        st.plan(1);
 | 
			
		||||
 | 
			
		||||
        var faker = {};
 | 
			
		||||
        faker[Symbol.toStringTag] = 'Symbol';
 | 
			
		||||
        st.equal(
 | 
			
		||||
            inspect(faker),
 | 
			
		||||
            '{ [Symbol(Symbol.toStringTag)]: \'Symbol\' }',
 | 
			
		||||
            'object lying about being a Symbol inspects as an object'
 | 
			
		||||
        );
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('Map', { skip: typeof Map !== 'function' }, function (t) {
 | 
			
		||||
    var map = new Map();
 | 
			
		||||
    map.set({ a: 1 }, ['b']);
 | 
			
		||||
    map.set(3, NaN);
 | 
			
		||||
    var expectedString = 'Map (2) {' + inspect({ a: 1 }) + ' => ' + inspect(['b']) + ', 3 => NaN}';
 | 
			
		||||
    t.equal(inspect(map), expectedString, 'new Map([[{ a: 1 }, ["b"]], [3, NaN]]) should show size and contents');
 | 
			
		||||
    t.equal(inspect(new Map()), 'Map (0) {}', 'empty Map should show as empty');
 | 
			
		||||
 | 
			
		||||
    var nestedMap = new Map();
 | 
			
		||||
    nestedMap.set(nestedMap, map);
 | 
			
		||||
    t.equal(inspect(nestedMap), 'Map (1) {[Circular] => ' + expectedString + '}', 'Map containing a Map should work');
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('WeakMap', { skip: typeof WeakMap !== 'function' }, function (t) {
 | 
			
		||||
    var map = new WeakMap();
 | 
			
		||||
    map.set({ a: 1 }, ['b']);
 | 
			
		||||
    var expectedString = 'WeakMap { ? }';
 | 
			
		||||
    t.equal(inspect(map), expectedString, 'new WeakMap([[{ a: 1 }, ["b"]]]) should not show size or contents');
 | 
			
		||||
    t.equal(inspect(new WeakMap()), 'WeakMap { ? }', 'empty WeakMap should not show as empty');
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('Set', { skip: typeof Set !== 'function' }, function (t) {
 | 
			
		||||
    var set = new Set();
 | 
			
		||||
    set.add({ a: 1 });
 | 
			
		||||
    set.add(['b']);
 | 
			
		||||
    var expectedString = 'Set (2) {' + inspect({ a: 1 }) + ', ' + inspect(['b']) + '}';
 | 
			
		||||
    t.equal(inspect(set), expectedString, 'new Set([{ a: 1 }, ["b"]]) should show size and contents');
 | 
			
		||||
    t.equal(inspect(new Set()), 'Set (0) {}', 'empty Set should show as empty');
 | 
			
		||||
 | 
			
		||||
    var nestedSet = new Set();
 | 
			
		||||
    nestedSet.add(set);
 | 
			
		||||
    nestedSet.add(nestedSet);
 | 
			
		||||
    t.equal(inspect(nestedSet), 'Set (2) {' + expectedString + ', [Circular]}', 'Set containing a Set should work');
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('WeakSet', { skip: typeof WeakSet !== 'function' }, function (t) {
 | 
			
		||||
    var map = new WeakSet();
 | 
			
		||||
    map.add({ a: 1 });
 | 
			
		||||
    var expectedString = 'WeakSet { ? }';
 | 
			
		||||
    t.equal(inspect(map), expectedString, 'new WeakSet([{ a: 1 }]) should not show size or contents');
 | 
			
		||||
    t.equal(inspect(new WeakSet()), 'WeakSet { ? }', 'empty WeakSet should not show as empty');
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('WeakRef', { skip: typeof WeakRef !== 'function' }, function (t) {
 | 
			
		||||
    var ref = new WeakRef({ a: 1 });
 | 
			
		||||
    var expectedString = 'WeakRef { ? }';
 | 
			
		||||
    t.equal(inspect(ref), expectedString, 'new WeakRef({ a: 1 }) should not show contents');
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('FinalizationRegistry', { skip: typeof FinalizationRegistry !== 'function' }, function (t) {
 | 
			
		||||
    var registry = new FinalizationRegistry(function () {});
 | 
			
		||||
    var expectedString = 'FinalizationRegistry [FinalizationRegistry] {}';
 | 
			
		||||
    t.equal(inspect(registry), expectedString, 'new FinalizationRegistry(function () {}) should work normallys');
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('Strings', function (t) {
 | 
			
		||||
    var str = 'abc';
 | 
			
		||||
 | 
			
		||||
    t.equal(inspect(str), "'" + str + "'", 'primitive string shows as such');
 | 
			
		||||
    t.equal(inspect(str, { quoteStyle: 'single' }), "'" + str + "'", 'primitive string shows as such, single quoted');
 | 
			
		||||
    t.equal(inspect(str, { quoteStyle: 'double' }), '"' + str + '"', 'primitive string shows as such, double quoted');
 | 
			
		||||
    t.equal(inspect(Object(str)), 'Object(' + inspect(str) + ')', 'String object shows as such');
 | 
			
		||||
    t.equal(inspect(Object(str), { quoteStyle: 'single' }), 'Object(' + inspect(str, { quoteStyle: 'single' }) + ')', 'String object shows as such, single quoted');
 | 
			
		||||
    t.equal(inspect(Object(str), { quoteStyle: 'double' }), 'Object(' + inspect(str, { quoteStyle: 'double' }) + ')', 'String object shows as such, double quoted');
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('Numbers', function (t) {
 | 
			
		||||
    var num = 42;
 | 
			
		||||
 | 
			
		||||
    t.equal(inspect(num), String(num), 'primitive number shows as such');
 | 
			
		||||
    t.equal(inspect(Object(num)), 'Object(' + inspect(num) + ')', 'Number object shows as such');
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('Booleans', function (t) {
 | 
			
		||||
    t.equal(inspect(true), String(true), 'primitive true shows as such');
 | 
			
		||||
    t.equal(inspect(Object(true)), 'Object(' + inspect(true) + ')', 'Boolean object true shows as such');
 | 
			
		||||
 | 
			
		||||
    t.equal(inspect(false), String(false), 'primitive false shows as such');
 | 
			
		||||
    t.equal(inspect(Object(false)), 'Object(' + inspect(false) + ')', 'Boolean false object shows as such');
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('Date', function (t) {
 | 
			
		||||
    var now = new Date();
 | 
			
		||||
    t.equal(inspect(now), String(now), 'Date shows properly');
 | 
			
		||||
    t.equal(inspect(new Date(NaN)), 'Invalid Date', 'Invalid Date shows properly');
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('RegExps', function (t) {
 | 
			
		||||
    t.equal(inspect(/a/g), '/a/g', 'regex shows properly');
 | 
			
		||||
    t.equal(inspect(new RegExp('abc', 'i')), '/abc/i', 'new RegExp shows properly');
 | 
			
		||||
 | 
			
		||||
    var match = 'abc abc'.match(/[ab]+/);
 | 
			
		||||
    delete match.groups; // for node < 10
 | 
			
		||||
    t.equal(inspect(match), '[ \'ab\', index: 0, input: \'abc abc\' ]', 'RegExp match object shows properly');
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('Proxies', { skip: typeof Proxy !== 'function' || !hasToStringTag }, function (t) {
 | 
			
		||||
    var target = { proxy: true };
 | 
			
		||||
    var fake = new Proxy(target, { has: function () { return false; } });
 | 
			
		||||
 | 
			
		||||
    // needed to work around a weird difference in node v6.0 - v6.4 where non-present properties are not logged
 | 
			
		||||
    var isNode60 = semver.satisfies(process.version, '6.0 - 6.4');
 | 
			
		||||
 | 
			
		||||
    forEach([
 | 
			
		||||
        'Boolean',
 | 
			
		||||
        'Number',
 | 
			
		||||
        'String',
 | 
			
		||||
        'Symbol',
 | 
			
		||||
        'Date'
 | 
			
		||||
    ], function (tag) {
 | 
			
		||||
        target[Symbol.toStringTag] = tag;
 | 
			
		||||
 | 
			
		||||
        t.equal(
 | 
			
		||||
            inspect(fake),
 | 
			
		||||
            '{ ' + (isNode60 ? '' : 'proxy: true, ') + '[Symbol(Symbol.toStringTag)]: \'' + tag + '\' }',
 | 
			
		||||
            'Proxy for + ' + tag + ' shows as the target, which has no slots'
 | 
			
		||||
        );
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('fakers', { skip: !hasToStringTag }, function (t) {
 | 
			
		||||
    var target = { proxy: false };
 | 
			
		||||
 | 
			
		||||
    forEach([
 | 
			
		||||
        'Boolean',
 | 
			
		||||
        'Number',
 | 
			
		||||
        'String',
 | 
			
		||||
        'Symbol',
 | 
			
		||||
        'Date'
 | 
			
		||||
    ], function (tag) {
 | 
			
		||||
        target[Symbol.toStringTag] = tag;
 | 
			
		||||
 | 
			
		||||
        t.equal(
 | 
			
		||||
            inspect(target),
 | 
			
		||||
            '{ proxy: false, [Symbol(Symbol.toStringTag)]: \'' + tag + '\' }',
 | 
			
		||||
            'Object pretending to be ' + tag + ' does not trick us'
 | 
			
		||||
        );
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    t.end();
 | 
			
		||||
});
 | 
			
		||||
		Reference in New Issue
	
	Block a user