61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| var forEach = require('foreach');
 | |
| var debug = require('object-inspect');
 | |
| 
 | |
| var assertRecord = require('../../helpers/assertRecord');
 | |
| var v = require('./values');
 | |
| 
 | |
| module.exports = function assertRecordTests(ES, test) {
 | |
|   test('Property Descriptor', function (t) {
 | |
|     var record = 'Property Descriptor';
 | |
| 
 | |
|     forEach(v.nonUndefinedPrimitives, function (primitive) {
 | |
|       t['throws'](
 | |
|         function () { assertRecord(ES, record, 'arg', primitive); },
 | |
|         TypeError,
 | |
|         debug(primitive) + ' is not a Property Descriptor'
 | |
|       );
 | |
|     });
 | |
| 
 | |
|     t['throws'](
 | |
|       function () { assertRecord(ES, record, 'arg', { invalid: true }); },
 | |
|       TypeError,
 | |
|       'invalid keys not allowed on a Property Descriptor'
 | |
|     );
 | |
| 
 | |
|     t.doesNotThrow(
 | |
|       function () { assertRecord(ES, record, 'arg', {}); },
 | |
|       'empty object is an incomplete Property Descriptor'
 | |
|     );
 | |
| 
 | |
|     t.doesNotThrow(
 | |
|       function () { assertRecord(ES, record, 'arg', v.accessorDescriptor()); },
 | |
|       'accessor descriptor is a Property Descriptor'
 | |
|     );
 | |
| 
 | |
|     t.doesNotThrow(
 | |
|       function () { assertRecord(ES, record, 'arg', v.mutatorDescriptor()); },
 | |
|       'mutator descriptor is a Property Descriptor'
 | |
|     );
 | |
| 
 | |
|     t.doesNotThrow(
 | |
|       function () { assertRecord(ES, record, 'arg', v.dataDescriptor()); },
 | |
|       'data descriptor is a Property Descriptor'
 | |
|     );
 | |
| 
 | |
|     t.doesNotThrow(
 | |
|       function () { assertRecord(ES, record, 'arg', v.genericDescriptor()); },
 | |
|       'generic descriptor is a Property Descriptor'
 | |
|     );
 | |
| 
 | |
|     t['throws'](
 | |
|       function () { assertRecord(ES, record, 'arg', v.bothDescriptor()); },
 | |
|       TypeError,
 | |
|       'a Property Descriptor can not be both a Data and an Accessor Descriptor'
 | |
|     );
 | |
| 
 | |
|     t.end();
 | |
|   });
 | |
| };
 |