|
|
- '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();
- });
- };
|