Skip to content

Commit 65deb93

Browse files
author
Don McCurdy
committed
AnimationClip: Add optimize and validate unit tests.
1 parent 61dc998 commit 65deb93

File tree

2 files changed

+38
-4
lines changed

2 files changed

+38
-4
lines changed

src/animation/AnimationClip.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -344,28 +344,32 @@ Object.assign( AnimationClip.prototype, {
344344

345345
validate: function () {
346346

347-
if (this.isValidated) return this;
347+
if ( this.isValidated ) return this;
348348

349349
for ( var i = 0; i < this.tracks.length; i ++ ) {
350350

351351
this.tracks[ i ].validate();
352352

353353
}
354354

355+
this.isValidated = true;
356+
355357
return this;
356358

357359
},
358360

359361
optimize: function () {
360362

361-
if (this.isOptimized) return this;
363+
if ( this.isOptimized ) return this;
362364

363365
for ( var i = 0; i < this.tracks.length; i ++ ) {
364366

365367
this.tracks[ i ].optimize();
366368

367369
}
368370

371+
this.isOptimized = true;
372+
369373
return this;
370374

371375
}

test/unit/src/animation/AnimationClip.tests.js

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
/* global QUnit */
55

66
import { AnimationClip } from '../../../../src/animation/AnimationClip';
7+
import { NumberKeyframeTrack } from '../../../../src/animation/tracks/NumberKeyframeTrack';
78

89
export default QUnit.module( 'Animation', () => {
910

@@ -66,9 +67,38 @@ export default QUnit.module( 'Animation', () => {
6667

6768
} );
6869

69-
QUnit.todo( "optimize", ( assert ) => {
70+
QUnit.test( 'optimize', ( assert ) => {
7071

71-
assert.ok( false, "everything's gonna be alright" );
72+
var track = new NumberKeyframeTrack( '.material.opacity', [ 0, 1, 2, 3, 4 ], [ 0, 0, 0, 0, 1 ] );
73+
var clip = new AnimationClip( 'fadeIn', 4, [ track ] );
74+
75+
assert.equal( clip.tracks[0].values.length, 5 );
76+
77+
clip.isOptimized = true;
78+
clip.optimize();
79+
80+
assert.equal( clip.tracks[0].values.length, 5 );
81+
82+
clip.isOptimized = false;
83+
clip.optimize();
84+
85+
assert.equal( clip.tracks[0].values.length, 3 );
86+
87+
} );
88+
89+
QUnit.test( 'validate', ( assert ) => {
90+
91+
var track = new NumberKeyframeTrack( '.material.opacity', [ 0, 1 ], [ 0, NaN ] );
92+
var clip = new AnimationClip( 'fadeIn', 1, [ track ] );
93+
94+
track.validate = () => { throw new Error('Validation should not be called.') };
95+
clip.isValidated = true;
96+
clip.validate();
97+
98+
delete track.validate;
99+
clip.isValidated = false;
100+
clip.validate();
101+
assert.ok( clip.isValidated );
72102

73103
} );
74104

0 commit comments

Comments
 (0)