Skip to content

Commit

Permalink
Move Number polyfills into the /polyfills/ directory
Browse files Browse the repository at this point in the history
Reviewed By: vjeux

Differential Revision: D3223317

fb-gh-sync-id: a49a14f217b27d6542b65c4780c557e73da2443f
fbshipit-source-id: a49a14f217b27d6542b65c4780c557e73da2443f
  • Loading branch information
steveluscher authored and Facebook Github Bot 6 committed Apr 26, 2016
1 parent 2eef115 commit dad39eb
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -184,12 +184,6 @@ function setUpProcessEnv() {
}
}

function setUpNumber() {
polyfillIfNeeded('EPSILON', Math.pow(2, -52), Number);
polyfillIfNeeded('MAX_SAFE_INTEGER', Math.pow(2, 53) - 1, Number);
polyfillIfNeeded('MIN_SAFE_INTEGER', -(Math.pow(2, 53) - 1), Number);
}

function setUpDevTools() {
// not when debugging in chrome
if (__DEV__) { // TODO(9123099) Strip `__DEV__ &&`
Expand All @@ -212,7 +206,6 @@ setUpMapAndSet();
setUpProduct();
setUpWebSockets();
setUpProfile();
setUpNumber();
setUpDevTools();

// Just to make sure the JS gets packaged up. Wait until the JS environment has
Expand Down
15 changes: 15 additions & 0 deletions packager/react-packager/src/Resolver/polyfills/Number.es6.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,21 @@
* @polyfill
*/

if (Number.EPSILON === undefined) {
Object.defineProperty(Number, 'EPSILON', {
value: Math.pow(2, -52),
});
}
if (Number.MAX_SAFE_INTEGER === undefined) {
Object.defineProperty(Number, 'MAX_SAFE_INTEGER', {
value: Math.pow(2, 53) - 1,
});
}
if (Number.MIN_SAFE_INTEGER === undefined) {
Object.defineProperty(Number, 'MIN_SAFE_INTEGER', {
value: -(Math.pow(2, 53) - 1),
});
}
if (!Number.isNaN) {
// https://github.com/dherman/tc39-codex-wiki/blob/master/data/es6/number/index.md#polyfill-for-numberisnan
const globalIsNaN = global.isNaN;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,40 @@
jest.autoMockOff();

describe('Number (ES6)', () => {
describe('EPSILON', () => {
beforeEach(() => {
delete Number.EPSILON;
jest.resetModuleRegistry();
require('../Number.es6');
});
it('is 2^(-52)', () => {
expect(Number.EPSILON).toBe(Math.pow(2, -52));
});
it('can be used to test equality', () => {
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/EPSILON#Testing_equality
expect(Number.EPSILON).toBeGreaterThan(Math.abs(0.2 - 0.3 + 0.1));
});
});
describe('MAX_SAFE_INTEGER', () => {
beforeEach(() => {
delete Number.MAX_SAFE_INTEGER;
jest.resetModuleRegistry();
require('../Number.es6');
});
it('is 2^53 - 1', () => {
expect(Number.MAX_SAFE_INTEGER).toBe(Math.pow(2, 53) - 1);
});
});
describe('MIN_SAFE_INTEGER', () => {
beforeEach(() => {
delete Number.MIN_SAFE_INTEGER;
jest.resetModuleRegistry();
require('../Number.es6');
});
it('is -(2^53 - 1)', () => {
expect(Number.MIN_SAFE_INTEGER).toBe(-(Math.pow(2, 53) - 1));
});
});
describe('isNaN()', () => {
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN#Examples
beforeEach(() => {
Expand Down

0 comments on commit dad39eb

Please sign in to comment.