Skip to content

Commit

Permalink
[Tests] add implementation tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ljharb committed May 25, 2021
1 parent b6d30b6 commit 5edecfe
Showing 1 changed file with 32 additions and 2 deletions.
34 changes: 32 additions & 2 deletions test/tests.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,36 @@
'use strict';

// eslint-disable-next-line no-unused-vars
var hasSymbols = require('has-symbols')();

module.exports = function runTests(hasOwn, t) {
// TODO
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();
});
};

0 comments on commit 5edecfe

Please sign in to comment.