| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | 
							- 'use strict';
 
- var test = require('tape');
 
- var hasNames = require('../');
 
- test('named functions', function (t) {
 
- 	function f() {} // eslint-disable-line func-style
 
- 	var g = function h() {};
 
- 	t.equal(typeof hasNames, 'function', 'is a function');
 
- 	t.equal(hasNames(), f.name === 'f' && g.name === 'h', 'functions have names or not as expected');
 
- 	t.end();
 
- });
 
- var oDP = Object.defineProperty;
 
- if (oDP) {
 
- 	try {
 
- 		oDP({}, 'a', { value: 1 });
 
- 	} catch (e) {
 
- 		oDP = null;
 
- 	}
 
- }
 
- test('functionsHaveConfigurableNames', function (t) {
 
- 	t.equal(typeof hasNames.functionsHaveConfigurableNames, 'function', 'is a function');
 
- 	if (hasNames()) {
 
- 		var fn = function f() {};
 
- 		if (oDP) {
 
- 			try {
 
- 				oDP(fn, 'name', { configurable: true, value: 'foo' });
 
- 			} catch (e) {}
 
- 			if (fn.name === 'f') {
 
- 				t.equal(hasNames.functionsHaveConfigurableNames(), false, 'function names are not configurable');
 
- 			} else if (fn.name === 'foo') {
 
- 				t.equal(hasNames.functionsHaveConfigurableNames(), true, 'function names are not configurable');
 
- 			} else {
 
- 				t.fail('functions have names, but something surprising has happened. Please report this!');
 
- 			}
 
- 		} else {
 
- 			t.equal(hasNames.functionsHaveConfigurableNames(), false, 'function names are not configurable');
 
- 		}
 
- 	} else {
 
- 		t.equal(hasNames.functionsHaveConfigurableNames(), false, 'functions do not have names');
 
- 	}
 
- 	t.end();
 
- });
 
- test('boundFunctionsHaveNames', function (t) {
 
- 	t.equal(typeof hasNames.boundFunctionsHaveNames, 'function', 'is a function');
 
- 	var fn = function f() {};
 
- 	if (typeof fn.bind !== 'function') {
 
- 		t.equal(hasNames.boundFunctionsHaveNames(), false, 'bound functions do not have names, because .bind does not exist');
 
- 	} else if (hasNames()) {
 
- 		t.equal(hasNames.boundFunctionsHaveNames(), fn.bind().name !== '', 'bound functions have names');
 
- 	} else {
 
- 		t.equal(hasNames.boundFunctionsHaveNames(), false, 'bound functions do not have names, because none do');
 
- 	}
 
- 	t.end();
 
- });
 
 
  |