OLD | NEW |
(Empty) | |
| 1 suite('animation-node', function() { |
| 2 test('normalize timing input', function() { |
| 3 assert.equal(normalizeTimingInput(1).duration, 1); |
| 4 assert.equal(normalizeTimingInput(1).easing(0.2), 0.2); |
| 5 assert.equal(normalizeTimingInput(undefined).duration, 0); |
| 6 }); |
| 7 test('calculating active duration', function() { |
| 8 assert.equal(calculateActiveDuration({duration: 1000, playbackRate: 4, itera
tions: 20}), 5000); |
| 9 assert.equal(calculateActiveDuration({duration: 500, playbackRate: 0.1, iter
ations: 300}), 1500000); |
| 10 }); |
| 11 test('conversion of timing functions', function() { |
| 12 var f = toTimingFunction('ease'); |
| 13 var g = toTimingFunction('cubic-bezier(.25, 0.1, 0.25, 1.)'); |
| 14 for (var i = 0; i < 1; i += 0.1) { |
| 15 assert.equal(f(i), g(i)); |
| 16 } |
| 17 assert.closeTo(f(0.1844), 0.2601, 0.01); |
| 18 assert.closeTo(g(0.1844), 0.2601, 0.01); |
| 19 |
| 20 f = toTimingFunction('cubic-bezier(0, 1, 1, 0)'); |
| 21 assert.closeTo(f(0.104), 0.392, 0.01); |
| 22 |
| 23 function isLinear(f) { |
| 24 assert.equal(f(0.1), 0.1); |
| 25 assert.equal(f(0.4), 0.4); |
| 26 assert.equal(f(0.9), 0.9); |
| 27 } |
| 28 |
| 29 f = toTimingFunction('cubic-bezier(0, 1, -1, 1)'); |
| 30 isLinear(f); |
| 31 |
| 32 f = toTimingFunction('an elephant'); |
| 33 isLinear(f); |
| 34 |
| 35 f = toTimingFunction('cubic-bezier(-1, 1, 1, 1)'); |
| 36 isLinear(f); |
| 37 |
| 38 f = toTimingFunction('cubic-bezier(1, 1, 1)'); |
| 39 isLinear(f); |
| 40 |
| 41 f = toTimingFunction('steps(10, end)'); |
| 42 assert.equal(f(0), 0); |
| 43 assert.equal(f(0.09), 0); |
| 44 assert.equal(f(0.1), 0.1); |
| 45 assert.equal(f(0.25), 0.2); |
| 46 }); |
| 47 test('calculating phase', function() { |
| 48 // calculatePhase(activeDuration, localTime, timing); |
| 49 assert.equal(calculatePhase(1000, 100, {delay: 0}), PhaseActive); |
| 50 assert.equal(calculatePhase(1000, 100, {delay: 200}), PhaseBefore); |
| 51 assert.equal(calculatePhase(1000, 2000, {delay: 200}), PhaseAfter); |
| 52 assert.equal(calculatePhase(1000, null, {delay: 200}), PhaseNone); |
| 53 }); |
| 54 test('calculating active time', function() { |
| 55 // calculateActiveTime(activeDuration, fillMode, localTime, phase, delay); |
| 56 assert.equal(calculateActiveTime(1000, 'forwards', 100, PhaseActive, 0), 100
); |
| 57 assert.equal(calculateActiveTime(1000, 'forwards', 100, PhaseBefore, 200), n
ull); |
| 58 assert.equal(calculateActiveTime(1000, 'both', 100, PhaseBefore, 200), 0); |
| 59 assert.equal(calculateActiveTime(1000, 'forwards', 500, PhaseActive, 200), 3
00); |
| 60 assert.equal(calculateActiveTime(1000, 'forwards', 1100, PhaseAfter, 200), 1
000); |
| 61 assert.equal(calculateActiveTime(1000, 'none', 1100, PhaseAfter, 200), null)
; |
| 62 assert.equal(calculateActiveTime(Infinity, 'both', 5000000, PhaseActive, 200
0000), 3000000); |
| 63 assert.equal(calculateActiveTime(Infinity, 'both', 50000, PhaseBefore, 20000
00), 0); |
| 64 }); |
| 65 test('calculating scaled active time', function() { |
| 66 // calculateScaledActiveTime(activeDuration, activeTime, startOffset, timing
Input); |
| 67 assert.equal(calculateScaledActiveTime(1000, 200, 300, {playbackRate: 1.5}),
600); |
| 68 assert.equal(calculateScaledActiveTime(1000, 200, 300, {playbackRate: -4}),
3500); |
| 69 assert.equal(calculateScaledActiveTime(Infinity, 400, 200, {playbackRate: 1}
), 600); |
| 70 assert.equal(calculateScaledActiveTime(Infinity, 400, 200, {playbackRate: -4
}), Infinity); |
| 71 }); |
| 72 test('calculating iteration time', function() { |
| 73 // calculateIterationTime(iterationDuration, repeatedDuration, scaledActiveT
ime, startOffset, timingInput); |
| 74 assert.equal(calculateIterationTime(500, 5000, 600, 100, {iterations: 10, it
erationStart: 0}), 100); |
| 75 assert.equal(calculateIterationTime(500, 5000, Infinity, 100, {iterations: 1
0, iterationStart: 0}), 500); |
| 76 assert.equal(calculateIterationTime(500, 5000, 5100, 100, {iterations: 3.2,
iterationStart: 0.8}), 500); |
| 77 }); |
| 78 test('calculating current iteration', function() { |
| 79 // calculateCurrentIteration(iterationDuration, iterationTime, scaledActiveT
ime, timingInput); |
| 80 assert.equal(calculateCurrentIteration(1000, 400, 4400, {iterations: 50, ite
rationStart: 0.8}), 4); |
| 81 assert.equal(calculateCurrentIteration(1000, 1000, 4400, {iterations: 50.2,
iterationStart: 0.8}), 50); |
| 82 }); |
| 83 test('calculating transformed time', function() { |
| 84 // calculateTransformedTime(currentIteration, iterationDuration, iterationTi
me, timingInput); |
| 85 assert.equal(calculateTransformedTime(4, 1000, 200, {easing: function(x) { r
eturn x; }, direction: 'normal'}), 200); |
| 86 assert.equal(calculateTransformedTime(4, 1000, 200, {easing: function(x) { r
eturn x; }, direction: 'reverse'}), 800); |
| 87 assert.closeTo(calculateTransformedTime(4, 1000, 200, {easing: function(x) {
return x * x; }, direction: 'reverse'}), 640, 0.0001); |
| 88 assert.closeTo(calculateTransformedTime(4, 1000, 600, {easing: function(x) {
return x * x; }, direction: 'alternate'}), 360, 0.0001); |
| 89 assert.closeTo(calculateTransformedTime(3, 1000, 600, {easing: function(x) {
return x * x; }, direction: 'alternate'}), 160, 0.0001); |
| 90 assert.closeTo(calculateTransformedTime(4, 1000, 600, {easing: function(x) {
return x * x; }, direction: 'alternate-reverse'}), 160, 0.0001); |
| 91 assert.closeTo(calculateTransformedTime(3, 1000, 600, {easing: function(x) {
return x * x; }, direction: 'alternate-reverse'}), 360, 0.0001); |
| 92 }); |
| 93 test('Animation Node', function() { |
| 94 var timing = normalizeTimingInput({duration: 1000, iterations: 4, iterationS
tart: 0.5, easing: 'linear', direction: 'alternate', delay: 100, fill: 'forwards
'}); |
| 95 var timing2 = normalizeTimingInput({duration: 1000, iterations: 4, iteration
Start: 0.5, easing: 'ease', direction: 'alternate', delay: 100, fill: 'forwards'
}); |
| 96 var node = webAnimationsMinifill.AnimationNode(timing); |
| 97 var node2 = webAnimationsMinifill.AnimationNode(timing2); |
| 98 assert.equal(node(0), null); |
| 99 assert.equal(node(100), 0.5); |
| 100 assert.closeTo(node2(100), 0.8, 0.005); |
| 101 assert.equal(node(600), 1); |
| 102 assert.closeTo(node2(600), 1, 0.005); |
| 103 assert.equal(node(700), 0.9); |
| 104 assert.closeTo(node2(700), 0.99, 0.005); |
| 105 assert.equal(node(1600), 0); |
| 106 assert.closeTo(node2(1600), 0, 0.005); |
| 107 assert.equal(node(4000), 0.4); |
| 108 assert.closeTo(node2(4000), 0.68, 0.005); |
| 109 assert.equal(node(4100), 0.5); |
| 110 assert.closeTo(node2(4100), 0.8, 0.005); |
| 111 assert.equal(node(6000), 0.5); |
| 112 assert.closeTo(node2(6000), 0.8, 0.005); |
| 113 }); |
| 114 }); |
OLD | NEW |