| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | 
							- 'use strict';
 
- var test = require('tape');
 
- var hasSymbols = require('has-symbols/shams')();
 
- var hasPropertyDescriptors = require('has-property-descriptors')();
 
- var ownKeys = require('../');
 
- /** @type {(a: PropertyKey, b: PropertyKey) => number} */
 
- function comparator(a, b) {
 
- 	if (typeof a === 'string' && typeof b === 'string') {
 
- 		return a.localeCompare(b);
 
- 	}
 
- 	if (typeof a === 'number' && typeof b === 'number') {
 
- 		return a - b;
 
- 	}
 
- 	return typeof a === 'symbol' ? 1 : -1;
 
- }
 
- test('ownKeys', function (t) {
 
- 	t.equal(typeof ownKeys, 'function', 'is a function');
 
- 	t.equal(
 
- 		ownKeys.length,
 
- 		1,
 
- 		'has a length of 1'
 
- 	);
 
- 	t.test('basics', function (st) {
 
- 		var obj = { a: 1, b: 2 };
 
- 		if (hasPropertyDescriptors) {
 
- 			Object.defineProperty(obj, 'c', {
 
- 				configurable: true,
 
- 				enumerable: false,
 
- 				writable: true,
 
- 				value: 3
 
- 			});
 
- 		}
 
- 		st.deepEqual(
 
- 			ownKeys(obj).sort(comparator),
 
- 			(hasPropertyDescriptors ? ['a', 'b', 'c'] : ['a', 'b']).sort(comparator),
 
- 			'includes non-enumerable properties'
 
- 		);
 
- 		st.end();
 
- 	});
 
- 	t.test('symbols', { skip: !hasSymbols }, function (st) {
 
- 		/** @type {Record<PropertyKey, unknown>} */
 
- 		var obj = { a: 1 };
 
- 		var sym = Symbol('b');
 
- 		obj[sym] = 2;
 
- 		var nonEnumSym = Symbol('c');
 
- 		Object.defineProperty(obj, nonEnumSym, {
 
- 			configurable: true,
 
- 			enumerable: false,
 
- 			writable: true,
 
- 			value: 3
 
- 		});
 
- 		st.deepEqual(
 
- 			ownKeys(obj).sort(comparator),
 
- 			['a', sym, nonEnumSym].sort(comparator),
 
- 			'works with symbols, both enum and non-enum'
 
- 		);
 
- 		st.end();
 
- 	});
 
- 	t.end();
 
- });
 
 
  |