HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ip-172-26-0-120 6.17.0-1009-aws #9~24.04.2-Ubuntu SMP Fri Mar 6 23:50:29 UTC 2026 x86_64
User: ubuntu (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: //var/www/html/orbi-individual/node_modules/object.hasown/test/tests.js
'use strict';

var hasSymbols = require('has-symbols')();

module.exports = function runTests(hasOwn, t) {
	var badPropertyKey = { toString: function () { throw new SyntaxError('nope'); } };

	t['throws'](
		function () { hasOwn(null, badPropertyKey); },
		TypeError,
		'checks ToObject first'
	);

	t['throws'](
		function () { hasOwn({}, badPropertyKey); },
		SyntaxError,
		'checks ToPropertyKey next'
	);

	var obj = { a: 1 };
	t.equal('toString' in obj, true, 'object literal has non-own toString');
	t.equal(hasOwn(obj, 'toString'), false, 'toString is not an own property');
	t.equal(hasOwn(obj, 'a'), true, 'own property is recognized');

	t.equal(hasOwn([], 'length'), true, 'non-enumerable own property is recognized');

	t.test('Symbols', { skip: !hasSymbols }, function (st) {
		var o = {};
		o[Symbol.iterator] = true;
		st.equal(hasOwn(o, Symbol.iterator), true, 'own symbol is recognized');

		st.equal(hasOwn(Array.prototype, Symbol.iterator), true, 'built-in own symbol is recognized');

		st.end();
	});
};