mirror of
https://github.com/status-im/react-native.git
synced 2025-02-04 13:44:04 +00:00
Move buildStyleInterpolator-test to open-source, remove unused files
Reviewed By: bestander Differential Revision: D3820939 fbshipit-source-id: 2ff114326642b522f162c6cce7853c8b3f0c138b
This commit is contained in:
parent
53eaf9062d
commit
5f381fd357
292
Libraries/Utilities/__tests__/buildStyleInterpolator-test.js
Normal file
292
Libraries/Utilities/__tests__/buildStyleInterpolator-test.js
Normal file
@ -0,0 +1,292 @@
|
||||
/**
|
||||
* Copyright (c) 2013-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
jest.unmock('buildStyleInterpolator');
|
||||
|
||||
var buildStyleInterpolator = require('buildStyleInterpolator');
|
||||
|
||||
var validateEmpty = function(interpolator, value, validator) {
|
||||
var emptyObject = {};
|
||||
var changed = interpolator(emptyObject, value);
|
||||
validator(emptyObject);
|
||||
expect(changed).toBe(true);
|
||||
changed = interpolator(emptyObject, value);
|
||||
expect(changed).toBe(false);
|
||||
};
|
||||
describe('buildStyleInterpolator', function() {
|
||||
it('should linearly interpolate without extrapolating', function() {
|
||||
var testAnim = {
|
||||
opacity: {
|
||||
from: 100,
|
||||
to: 200,
|
||||
min: 0,
|
||||
max: 1,
|
||||
type: 'linear',
|
||||
extrapolate: false,
|
||||
},
|
||||
left: {
|
||||
from: 200,
|
||||
to: 300,
|
||||
min: 0,
|
||||
max: 1,
|
||||
type: 'linear',
|
||||
extrapolate: false,
|
||||
},
|
||||
top: {
|
||||
type: 'constant',
|
||||
value: 23.5,
|
||||
},
|
||||
};
|
||||
var interpolator = buildStyleInterpolator(testAnim);
|
||||
validateEmpty(interpolator, 0, function(res) {
|
||||
expect(res).toEqual({
|
||||
opacity: 100,
|
||||
left: 200,
|
||||
top: 23.5,
|
||||
});
|
||||
});
|
||||
validateEmpty(interpolator, 1, function(res) {
|
||||
expect(res).toEqual({
|
||||
opacity: 200,
|
||||
left: 300,
|
||||
top: 23.5,
|
||||
});
|
||||
});
|
||||
validateEmpty(interpolator, -0.1, function(res) {
|
||||
expect(res).toEqual({
|
||||
opacity: 100,
|
||||
left: 200,
|
||||
top: 23.5,
|
||||
});
|
||||
});
|
||||
validateEmpty(interpolator, 1.1, function(res) {
|
||||
expect(res).toEqual({
|
||||
opacity: 200,
|
||||
left: 300,
|
||||
top: 23.5,
|
||||
});
|
||||
});
|
||||
validateEmpty(interpolator, 0.5, function(res) {
|
||||
expect(res).toEqual({
|
||||
opacity: 150,
|
||||
left: 250,
|
||||
top: 23.5,
|
||||
});
|
||||
});
|
||||
});
|
||||
it('should linearly interpolate with extrapolating', function() {
|
||||
var testAnim = {
|
||||
opacity: {
|
||||
from: 100,
|
||||
to: 200,
|
||||
min: 0,
|
||||
max: 1,
|
||||
type: 'linear',
|
||||
round: 1, // To make testing easier
|
||||
extrapolate: true,
|
||||
},
|
||||
left: {
|
||||
from: 200,
|
||||
to: 300,
|
||||
min: 0,
|
||||
max: 1,
|
||||
type: 'linear',
|
||||
round: 1, // To make testing easier
|
||||
extrapolate: true,
|
||||
},
|
||||
top: {
|
||||
type: 'constant',
|
||||
value: 23.5,
|
||||
},
|
||||
};
|
||||
var interpolator = buildStyleInterpolator(testAnim);
|
||||
validateEmpty(interpolator, 0, function(res) {
|
||||
expect(res).toEqual({
|
||||
opacity: 100,
|
||||
left: 200,
|
||||
top: 23.5,
|
||||
});
|
||||
});
|
||||
validateEmpty(interpolator, 1, function(res) {
|
||||
expect(res).toEqual({
|
||||
opacity: 200,
|
||||
left: 300,
|
||||
top: 23.5,
|
||||
});
|
||||
});
|
||||
validateEmpty(interpolator, -0.1, function(res) {
|
||||
expect(res).toEqual({
|
||||
opacity: 90,
|
||||
left: 190,
|
||||
top: 23.5,
|
||||
});
|
||||
});
|
||||
validateEmpty(interpolator, 1.1, function(res) {
|
||||
expect(res).toEqual({
|
||||
opacity: 210,
|
||||
left: 310,
|
||||
top: 23.5,
|
||||
});
|
||||
});
|
||||
validateEmpty(interpolator, 0.5, function(res) {
|
||||
expect(res).toEqual({
|
||||
opacity: 150,
|
||||
left: 250,
|
||||
top: 23.5,
|
||||
});
|
||||
});
|
||||
});
|
||||
it('should round accordingly', function() {
|
||||
var testAnim = {
|
||||
opacity: {
|
||||
from: 0,
|
||||
to: 1,
|
||||
min: 0,
|
||||
max: 1,
|
||||
type: 'linear',
|
||||
round: 2, // As in one over two
|
||||
extrapolate: true,
|
||||
},
|
||||
};
|
||||
var interpolator = buildStyleInterpolator(testAnim);
|
||||
validateEmpty(interpolator, 0, function(res) {
|
||||
expect(res).toEqual({
|
||||
opacity: 0,
|
||||
});
|
||||
});
|
||||
validateEmpty(interpolator, 0.5, function(res) {
|
||||
expect(res).toEqual({
|
||||
opacity: 0.5,
|
||||
});
|
||||
});
|
||||
validateEmpty(interpolator, 0.4, function(res) {
|
||||
expect(res).toEqual({
|
||||
opacity: 0.5,
|
||||
});
|
||||
});
|
||||
validateEmpty(interpolator, 0.26, function(res) {
|
||||
expect(res).toEqual({
|
||||
opacity: 0.5,
|
||||
});
|
||||
});
|
||||
validateEmpty(interpolator, 0.74, function(res) {
|
||||
expect(res).toEqual({
|
||||
opacity: 0.5,
|
||||
});
|
||||
});
|
||||
validateEmpty(interpolator, 0.76, function(res) {
|
||||
expect(res).toEqual({
|
||||
opacity: 1.0,
|
||||
});
|
||||
});
|
||||
});
|
||||
it('should detect chnages correctly', function() {
|
||||
var testAnim = {
|
||||
opacity: {
|
||||
from: 0,
|
||||
to: 1,
|
||||
min: 0,
|
||||
max: 1,
|
||||
type: 'linear',
|
||||
round: 2, // As in one over two
|
||||
extrapolate: false,
|
||||
},
|
||||
};
|
||||
var interpolator = buildStyleInterpolator(testAnim);
|
||||
var obj = {};
|
||||
var res = interpolator(obj, 0);
|
||||
expect(obj).toEqual({
|
||||
opacity: 0,
|
||||
});
|
||||
expect(res).toBe(true);
|
||||
|
||||
res = interpolator(obj, 0);
|
||||
// No change detected
|
||||
expect(obj).toEqual({
|
||||
opacity: 0,
|
||||
});
|
||||
expect(res).toBe(false);
|
||||
|
||||
// No change detected
|
||||
res = interpolator(obj, 1);
|
||||
expect(obj).toEqual({
|
||||
opacity: 1,
|
||||
});
|
||||
expect(res).toBe(true);
|
||||
|
||||
// Still no change detected even when clipping
|
||||
res = interpolator(obj, 1);
|
||||
expect(obj).toEqual({
|
||||
opacity: 1,
|
||||
});
|
||||
expect(res).toBe(false);
|
||||
});
|
||||
|
||||
it('should step', function() {
|
||||
var testAnim = {
|
||||
opacity: {
|
||||
threshold: 13,
|
||||
from: 10,
|
||||
to: 20,
|
||||
type: 'step',
|
||||
},
|
||||
};
|
||||
var interpolator = buildStyleInterpolator(testAnim);
|
||||
var obj = {};
|
||||
var res = interpolator(obj, 0);
|
||||
expect(obj).toEqual({
|
||||
opacity: 10,
|
||||
});
|
||||
expect(res).toBe(true);
|
||||
|
||||
res = interpolator(obj, 0);
|
||||
// No change detected
|
||||
expect(obj).toEqual({
|
||||
opacity: 10,
|
||||
});
|
||||
expect(res).toBe(false);
|
||||
|
||||
// No change detected
|
||||
res = interpolator(obj, 10);
|
||||
expect(obj).toEqual({
|
||||
opacity: 10,
|
||||
});
|
||||
expect(res).toBe(false);
|
||||
|
||||
// No change detected
|
||||
res = interpolator(obj, 12);
|
||||
expect(obj).toEqual({
|
||||
opacity: 10,
|
||||
});
|
||||
expect(res).toBe(false);
|
||||
|
||||
// No change detected
|
||||
res = interpolator(obj, 13);
|
||||
expect(obj).toEqual({
|
||||
opacity: 20,
|
||||
});
|
||||
expect(res).toBe(true);
|
||||
|
||||
// No change detected
|
||||
res = interpolator(obj, 13.1);
|
||||
expect(obj).toEqual({
|
||||
opacity: 20,
|
||||
});
|
||||
expect(res).toBe(false);
|
||||
|
||||
// No change detected
|
||||
res = interpolator(obj, 25);
|
||||
expect(obj).toEqual({
|
||||
opacity: 20,
|
||||
});
|
||||
expect(res).toBe(false);
|
||||
});
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user