| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- const { expect } = require('chai')
- const {
- transition,
- injectNewCurve
- } = require('../src/index')
- const testCurve = [[[0.000, 1.000]],[[0.151, 0.396], [0.019, 0.604], [0.330, 0.056]],[[1.000, 0.000]]]
- function findNaNInArray (arr) {
- return arr.findIndex(n => !Number.isFinite(n)) !== -1
- }
- describe('transition-Number', () => {
- const startState = 0
- const endState = 100
- const frame = 30
- const linearResult = transition('linear', startState, endState, frame)
- const testCurveResult = transition(testCurve, startState, endState, frame)
- it('transition()', () => {
- expect(transition()).to.be.false
- })
- it('Input an invalid tBC will automatically apply the default tBC', () => {
- expect(transition('invalid', startState, endState, frame)).to.deep.ordered.equal(linearResult)
- })
- it('Transition result must be an array (linearResult)', () => {
- expect(linearResult).to.be.an.instanceof(Array).lengthOf(frame)
- })
- it('Transition result must be an array (testCurveResult)', () => {
- expect(testCurveResult).to.be.an.instanceof(Array).lengthOf(frame)
- })
- it('Transition result first element must equal startstate (linearResult)', () => {
- expect(linearResult).to.property('0', startState)
- })
- it('Transition result first element must equal startstate (testCurveResult)', () => {
- expect(testCurveResult).to.property('0', startState)
- })
- it('Transition result last element must equal endState (linearResult)', () => {
- expect(linearResult).to.property(frame - 1, endState)
- })
- it('Transition result last element must equal endState (testCurveResult)', () => {
- expect(testCurveResult).to.property(frame - 1, endState)
- })
- it('Transition result elements should all be number (linearResult)', () => {
- expect(linearResult).satisfy(states => {
- return !findNaNInArray(states)
- })
- })
- it('Transition result elements should all be number (testCurveResult)', () => {
- expect(testCurveResult).satisfy(states => {
- return !findNaNInArray(states)
- })
- })
- })
- describe('transition-Array', () => {
- const startState = [0, 0]
- const endState = [100, 100]
- const frame = 30
- const linearResult = transition('linear', startState, endState, frame)
- const testCurveResult = transition(testCurve, startState, endState, frame)
- it('Transition result must be an array (linearResult)', () => {
- expect(linearResult).to.be.an.instanceof(Array).lengthOf(frame)
- })
- it('Transition result must be an array (testCurveResult)', () => {
- expect(testCurveResult).to.be.an.instanceof(Array).lengthOf(frame)
- })
- it('Transition result first element must equal startstate (linearResult)', () => {
- expect(linearResult).to.deep.property('0', startState)
- })
- it('Transition result first element must equal startstate (testCurveResult)', () => {
- expect(testCurveResult).to.deep.property('0', startState)
- })
- it('Transition result last element must equal endState (linearResult)', () => {
- expect(linearResult).to.deep.property(frame - 1, endState)
- })
- it('Transition result last element must equal endState (testCurveResult)', () => {
- expect(testCurveResult).to.deep.property(frame - 1, endState)
- })
- it('Transition result elements should all be number (linearResult)', () => {
- expect(linearResult).satisfy(states => {
- return !states.find(item => findNaNInArray(item))
- })
- })
- it('Transition result elements should all be number (testCurveResult)', () => {
- expect(testCurveResult).satisfy(states => {
- return !states.find(item => findNaNInArray(item))
- })
- })
- })
- describe('transition-Object', () => {
- const startState = { x: 0, y: 0, name: 'circle'}
- const endState = { x: 100, y: 100, name: 'circle'}
- const frame = 30
- const linearResult = transition('linear', startState, endState, frame)
- const testCurveResult = transition(testCurve, startState, endState, frame)
- it('Transition result must be an array (linearResult)', () => {
- expect(linearResult).to.be.an.instanceof(Array).lengthOf(frame)
- })
- it('Transition result must be an array (testCurveResult)', () => {
- expect(testCurveResult).to.be.an.instanceof(Array).lengthOf(frame)
- })
- it('Transition result first element must equal startstate (linearResult)', () => {
- expect(linearResult).to.deep.property('0', startState)
- })
- it('Transition result first element must equal startstate (testCurveResult)', () => {
- expect(testCurveResult).to.deep.property('0', startState)
- })
- it('Transition result last element must equal endState (linearResult)', () => {
- expect(linearResult).to.deep.property(frame - 1, endState)
- })
- it('Transition result last element must equal endState (testCurveResult)', () => {
- expect(testCurveResult).to.deep.property(frame - 1, endState)
- })
- })
- describe('transition-Deep', () => {
- const startState = { position: [0, 0], r: 0, name: 'circle'}
- const endState = { position: [100, 100], r: 0, name: 'circle'}
- const frame = 30
- const linearResult = transition('linear', startState, endState, frame, true)
- const testCurveResult = transition(testCurve, startState, endState, frame, true)
- it('Transition result must be an array (linearResult)', () => {
- expect(linearResult).to.be.an.instanceof(Array).lengthOf(frame)
- })
- it('Transition result must be an array (testCurveResult)', () => {
- expect(testCurveResult).to.be.an.instanceof(Array).lengthOf(frame)
- })
- it('Transition result first element must equal startstate (linearResult)', () => {
- expect(linearResult).to.deep.property('0', startState)
- })
- it('Transition result first element must equal startstate (testCurveResult)', () => {
- expect(testCurveResult).to.deep.property('0', startState)
- })
- it('Transition result last element must equal endState (linearResult)', () => {
- expect(linearResult).to.deep.property(frame - 1, endState)
- })
- it('Transition result last element must equal endState (testCurveResult)', () => {
- expect(testCurveResult).to.deep.property(frame - 1, endState)
- })
- })
- describe('injectNewCurve', () => {
- const startState = 0
- const endState = 100
- const frame = 30
- injectNewCurve('test', testCurve)
- const testCurveResult = transition(testCurve, startState, endState, frame)
- const injectCurveResult = transition('test', startState, endState, frame)
- it('Transition result must be an array (injectCurveResult)', () => {
- expect(injectCurveResult).to.be.an.instanceof(Array).lengthOf(frame)
- })
- it('Transition result first element must equal startstate (injectCurveResult)', () => {
- expect(injectCurveResult).to.property('0', startState)
- })
- it('Transition result last element must equal endState (injectCurveResult)', () => {
- expect(injectCurveResult).to.property(frame - 1, endState)
- })
- it('Transition result elements should all be number (injectCurveResult)', () => {
- expect(injectCurveResult).satisfy(states => {
- return !findNaNInArray(states)
- })
- })
- it('testCurveResult deep equal injectCurveResult', () => {
- expect(testCurveResult).deep.ordered.equal(injectCurveResult)
- })
- })
|