You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.0 KiB
36 lines
1.0 KiB
'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(); |
|
}); |
|
};
|
|
|