'use strict'; var test = require('tape'); var v = require('es-value-fixtures'); var Get = require('../Get'); test('Get', function (t) { t['throws']( // @ts-expect-error function () { return Get('a', 'a'); }, TypeError, 'Throws a TypeError if `O` is not an Object' ); t['throws']( // @ts-expect-error function () { return Get({ 7: 7 }, 7); }, TypeError, 'Throws a TypeError if `P` is not a property key' ); var sentinel = {}; t.test('Symbols', { skip: !v.hasSymbols }, function (st) { var sym = Symbol('sym'); var obj = /** @type {Record} */ ({}); obj[sym] = sentinel; st.equal(Get(obj, sym), sentinel, 'returns property `P` if it exists on object `O`'); st.end(); }); t.equal(Get({ a: sentinel }, 'a'), sentinel, 'returns property `P` if it exists on object `O`'); t.equal( // @ts-expect-error Get({}, 'a'), undefined, 'returns undefined if property `P` does not exist on object `O`' ); t.end(); });