Skip to content

Commit

Permalink
Made reflect tests require Object.defineProperty. Added many missing …
Browse files Browse the repository at this point in the history
…tests
  • Loading branch information
Victorystick committed Jan 4, 2015
1 parent bf2ed5b commit 1394ae6
Showing 1 changed file with 61 additions and 2 deletions.
63 changes: 61 additions & 2 deletions test/reflect.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

var exported = require('../');

describe('Reflect', function () {
// Reflect requires defineProperty
(Object.defineProperty ? describe : xdescribe)('Reflect', function () {
var object = {
something: 1,
_value: 0
Expand Down Expand Up @@ -193,14 +194,22 @@ describe('Reflect', function () {
});

it('only includes enumerable properties', function () {
/*jshint notypeof: true */

var a = Object.create(null, {
// Non-enumerable per default.
a: { value: 1 }
});

a.b = 2;

expect(Array.from(Reflect.enumerate(a))).to.deep.equal(['b']);
var iter = Reflect.enumerate(a);

if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {
expect(Symbol.iterator in iter).to.equal(true);
}

expect(Array.from(iter)).to.deep.equal(['b']);
});

it('includes all enumerable properties of prototypes', function () {
Expand Down Expand Up @@ -297,6 +306,19 @@ describe('Reflect', function () {
return Reflect.getOwnPropertyDescriptor(item, 'prop');
});
});

it('retrieves property descriptors', function () {
var obj = { a: 4711 };

var desc = Reflect.getOwnPropertyDescriptor(obj, 'a');

expect(desc).to.deep.equal({
value: 4711,
configurable: true,
writable: true,
enumerable: true
});
});
});

describe('Reflect.getPrototypeOf()', function () {
Expand All @@ -309,6 +331,12 @@ describe('Reflect', function () {
return Reflect.getPrototypeOf(item);
});
});

it('retrieves prototypes', function () {
expect(Reflect.getPrototypeOf(Object.create(null))).to.equal(null);

expect(Reflect.getPrototypeOf([])).to.equal(Array.prototype);
});
});

describe('Reflect.has()', function () {
Expand Down Expand Up @@ -434,6 +462,37 @@ describe('Reflect', function () {
return Reflect.set(item, 'prop', 'value');
});
});

it('sets values on receiver', function () {
var target = {};
var receiver = {};

expect(Reflect.set(target, 'foo', 1, receiver)).to.equal(true);

expect('foo' in target).to.equal(false);
expect(receiver.foo).to.equal(1);

expect(Reflect.defineProperty(receiver, 'bar', {
value: 0,
writable: true,
enumerable: false,
configurable: true
})).to.equal(true);

expect(Reflect.set(target, 'bar', 1, receiver)).to.equal(true);
expect(receiver.bar).to.equal(1);
expect(Reflect.getOwnPropertyDescriptor(receiver, 'bar').enumerable).to.equal(false);

var out;
target = Object.create({}, {
o: {
set: function (v) { out = this; }
}
});

expect(Reflect.set(target, 'o', 17, receiver)).to.equal(true);
expect(out).to.equal(receiver);
});
});

describe('Reflect.setPrototypeOf()', function () {
Expand Down

0 comments on commit 1394ae6

Please sign in to comment.