35 lines
		
	
	
		
			870 B
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			870 B
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
| '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();
 | |
| });
 |