| 'use strict'; |
| |
| var test = require('tape'); |
| var gPO = require('reflect.getprototypeof/polyfill')(); |
| var gOPD = require('gopd'); |
| |
| var hasProto = require('../'); |
| var hasProtoMutator = require('../mutator'); |
| |
| var getter = require('dunder-proto/get'); |
| |
| test('hasProtoMutator', function (t) { |
| var result = hasProtoMutator(); |
| t.equal(typeof result, 'boolean', 'returns a boolean (' + result + ')'); |
| |
| var obj = { __proto__: null }; |
| if (result) { |
| t.notOk('toString' in obj, 'null object lacks toString'); |
| t.equal(gPO(obj), null); |
| if (gOPD && getter) { |
| t.equal(getter(obj), null); |
| } |
| } else if (hasProto()) { |
| t.notOk('toString' in obj, 'null object lacks toString'); |
| if (gOPD && getter) { |
| t.equal(getter(obj), null); |
| } |
| } else { |
| t.ok('toString' in obj, 'without proto, null object has toString'); |
| t.equal(gPO(obj), Object.prototype); |
| } |
| |
| t.end(); |
| }); |