2
0
Эх сурвалжийг харах

Merge pull request #20900 from takahirox/ExampleUnitTest

Tests: Suggestion, Add npm run test-unit-examples command
Mr.doob 4 жил өмнө
parent
commit
606b7f0df9

+ 1 - 0
package.json

@@ -68,6 +68,7 @@
     "lint-examples": "eslint examples/js examples/jsm --ext js --ext ts --ignore-pattern libs && tsc -p utils/build/tsconfig-examples.lint.json",
     "test-lint": "eslint src --ext js --ext ts && tsc -p utils/build/tsconfig.lint.json",
     "test-unit": "npm run unit --prefix test",
+    "test-unit-examples": "npm run unit-examples --prefix test",
     "test-e2e": "node test/e2e/puppeteer.js",
     "test-e2e-cov": "node test/e2e/check-coverage.js",
     "make-screenshot": "node test/e2e/puppeteer.js --make"

+ 2 - 1
test/package.json

@@ -4,7 +4,8 @@
   "description": "This package hiding test dependincies from main repo because puppeteer is pretty big.",
   "scripts": {
     "dev": "rollup -c rollup.unit.config.js -w -m inline",
-    "unit": "rollup -c rollup.unit.config.js && rimraf node_modules/three && qunit -r failonlyreporter -f !-webonly unit/build/three.source.unit.js"
+    "unit": "rollup -c rollup.unit.config.js && rimraf node_modules/three && qunit -r failonlyreporter -f !-webonly unit/build/three.source.unit.js",
+    "unit-examples": "rollup -c rollup.unit.config.js && rimraf node_modules/three && qunit -r failonlyreporter -f !-webonly unit/build/three.example.unit.js"
   },
   "devDependencies": {
     "failonlyreporter": "^1.0.0",

+ 107 - 103
test/unit/example/exporters/GLTFExporter.tests.js

@@ -30,6 +30,113 @@ export default QUnit.module( 'Exporters', () => {
 
 		} );
 
+		QUnit.test( 'utils - insertKeyframe', ( assert ) => {
+
+			var track;
+			var index;
+
+			function createTrack() {
+
+				return new VectorKeyframeTrack(
+					'foo.bar',
+					[ 5,		10,	 15,	 20,	 25,	 30 ],
+					[ 0, 5, 1, 4, 2, 3, 3, 2, 4, 1, 5, 0 ],
+					InterpolateLinear
+				);
+
+			}
+
+			track = createTrack();
+			index = GLTFExporter.Utils.insertKeyframe( track, 0 );
+			assert.equal( index, 0, 'prepend - index' );
+			assert.smartEqual( Array.from( track.times ), [ 0, 5, 10, 15, 20, 25, 30 ], 'prepend - time' );
+			assert.smartEqual( Array.from( track.values ), [ 0, 5, 0, 5, 1, 4, 2, 3, 3, 2, 4, 1, 5, 0 ], 'prepend - value' );
+
+			track = createTrack();
+			index = GLTFExporter.Utils.insertKeyframe( track, 7.5 );
+			assert.equal( index, 1, 'insert - index (linear)' );
+			assert.smartEqual( Array.from( track.times ), [ 5, 7.5, 10, 15, 20, 25, 30 ], 'insert - time (linear)' );
+			assert.smartEqual( Array.from( track.values ), [ 0, 5, 0.5, 4.5, 1, 4, 2, 3, 3, 2, 4, 1, 5, 0 ], 'insert - value (linear)' );
+
+			track = createTrack();
+			track.setInterpolation( InterpolateDiscrete );
+			index = GLTFExporter.Utils.insertKeyframe( track, 16 );
+			assert.equal( index, 3, 'insert - index (linear)' );
+			assert.smartEqual( Array.from( track.times ), [ 5, 10, 15, 16, 20, 25, 30 ], 'insert - time (discrete)' );
+			assert.smartEqual( Array.from( track.values ), [ 0, 5, 1, 4, 2, 3, 2, 3, 3, 2, 4, 1, 5, 0 ], 'insert - value (discrete)' );
+
+			track = createTrack();
+			index = GLTFExporter.Utils.insertKeyframe( track, 100 );
+			assert.equal( index, 6, 'append - index' );
+			assert.smartEqual( Array.from( track.times ), [ 5, 10, 15, 20, 25, 30, 100 ], 'append time' );
+			assert.smartEqual( Array.from( track.values ), [ 0, 5, 1, 4, 2, 3, 3, 2, 4, 1, 5, 0, 5, 0 ], 'append value' );
+
+			track = createTrack();
+			index = GLTFExporter.Utils.insertKeyframe( track, 15 );
+			assert.equal( index, 2, 'existing - index' );
+			assert.smartEqual( Array.from( track.times ), [ 5, 10, 15, 20, 25, 30 ], 'existing - time' );
+			assert.smartEqual( Array.from( track.values ), [ 0, 5, 1, 4, 2, 3, 3, 2, 4, 1, 5, 0 ], 'existing - value' );
+
+			track = createTrack();
+			index = GLTFExporter.Utils.insertKeyframe( track, 20.000005 );
+			assert.equal( index, 3, 'tolerance - index' );
+			assert.smartEqual( Array.from( track.times ), [ 5, 10, 15, 20, 25, 30 ], 'tolerance - time' );
+			assert.smartEqual( Array.from( track.values ), [ 0, 5, 1, 4, 2, 3, 3, 2, 4, 1, 5, 0 ], 'tolerance - value' );
+
+		} );
+
+		QUnit.test( 'utils - mergeMorphTargetTracks', ( assert ) => {
+
+			var trackA = new NumberKeyframeTrack(
+				'foo.morphTargetInfluences[a]',
+				[ 5, 10, 15, 20, 25, 30 ],
+				[ 0, 0.2, 0.4, 0.6, 0.8, 1.0 ],
+				InterpolateLinear
+			);
+
+			var trackB = new NumberKeyframeTrack(
+				'foo.morphTargetInfluences[b]',
+				[ 10, 50 ],
+				[ 0.25, 0.75 ],
+				InterpolateLinear
+			);
+
+			var geometry = new BufferGeometry();
+			var position = new BufferAttribute( new Float32Array( [ 0, 0, 0, 0, 0, 1, 1, 0, 1 ] ), 3 );
+			geometry.setAttribute( 'position',	position );
+			geometry.morphAttributes.position = [ position, position ];
+
+			var mesh = new Mesh( geometry );
+			mesh.name = 'foo';
+			mesh.morphTargetDictionary.a = 0;
+			mesh.morphTargetDictionary.b = 1;
+
+			var root = new Object3D();
+			root.add( mesh );
+
+			var clip = new AnimationClip( 'waltz', undefined, [ trackA, trackB ] );
+			clip = GLTFExporter.Utils.mergeMorphTargetTracks( clip, root );
+
+			assert.equal( clip.tracks.length, 1, 'tracks are merged' );
+
+			var track = clip.tracks[ 0 ];
+
+			assert.smartEqual( Array.from( track.times ), [ 5, 10, 15, 20, 25, 30, 50 ], 'all keyframes are present' );
+
+			var expectedValues = [ 0, 0.25, 0.2, 0.25, 0.4, 0.3125, 0.6, 0.375, 0.8, 0.4375, 1.0, 0.5, 1.0, 0.75 ];
+
+			for ( var i = 0; i < track.values.length; i ++ ) {
+
+				assert.numEqual( track.values[ i ], expectedValues[ i ], 'all values are merged or interpolated - ' + i );
+
+			}
+
+		} );
+
+	} );
+
+	QUnit.module( 'GLTFExporter-webonly', () => {
+
 		QUnit.test( 'parse - metadata', ( assert ) => {
 
 			var done = assert.async();
@@ -236,109 +343,6 @@ export default QUnit.module( 'Exporters', () => {
 
 		} );
 
-		QUnit.test( 'utils - insertKeyframe', ( assert ) => {
-
-			var track;
-			var index;
-
-			function createTrack() {
-
-				return new VectorKeyframeTrack(
-					'foo.bar',
-					[ 5,		10,	 15,	 20,	 25,	 30 ],
-					[ 0, 5, 1, 4, 2, 3, 3, 2, 4, 1, 5, 0 ],
-					InterpolateLinear
-				);
-
-			}
-
-			track = createTrack();
-			index = GLTFExporter.Utils.insertKeyframe( track, 0 );
-			assert.equal( index, 0, 'prepend - index' );
-			assert.smartEqual( Array.from( track.times ), [ 0, 5, 10, 15, 20, 25, 30 ], 'prepend - time' );
-			assert.smartEqual( Array.from( track.values ), [ 0, 5, 0, 5, 1, 4, 2, 3, 3, 2, 4, 1, 5, 0 ], 'prepend - value' );
-
-			track = createTrack();
-			index = GLTFExporter.Utils.insertKeyframe( track, 7.5 );
-			assert.equal( index, 1, 'insert - index (linear)' );
-			assert.smartEqual( Array.from( track.times ), [ 5, 7.5, 10, 15, 20, 25, 30 ], 'insert - time (linear)' );
-			assert.smartEqual( Array.from( track.values ), [ 0, 5, 0.5, 4.5, 1, 4, 2, 3, 3, 2, 4, 1, 5, 0 ], 'insert - value (linear)' );
-
-			track = createTrack();
-			track.setInterpolation( InterpolateDiscrete );
-			index = GLTFExporter.Utils.insertKeyframe( track, 16 );
-			assert.equal( index, 3, 'insert - index (linear)' );
-			assert.smartEqual( Array.from( track.times ), [ 5, 10, 15, 16, 20, 25, 30 ], 'insert - time (discrete)' );
-			assert.smartEqual( Array.from( track.values ), [ 0, 5, 1, 4, 2, 3, 2, 3, 3, 2, 4, 1, 5, 0 ], 'insert - value (discrete)' );
-
-			track = createTrack();
-			index = GLTFExporter.Utils.insertKeyframe( track, 100 );
-			assert.equal( index, 6, 'append - index' );
-			assert.smartEqual( Array.from( track.times ), [ 5, 10, 15, 20, 25, 30, 100 ], 'append time' );
-			assert.smartEqual( Array.from( track.values ), [ 0, 5, 1, 4, 2, 3, 3, 2, 4, 1, 5, 0, 5, 0 ], 'append value' );
-
-			track = createTrack();
-			index = GLTFExporter.Utils.insertKeyframe( track, 15 );
-			assert.equal( index, 2, 'existing - index' );
-			assert.smartEqual( Array.from( track.times ), [ 5, 10, 15, 20, 25, 30 ], 'existing - time' );
-			assert.smartEqual( Array.from( track.values ), [ 0, 5, 1, 4, 2, 3, 3, 2, 4, 1, 5, 0 ], 'existing - value' );
-
-			track = createTrack();
-			index = GLTFExporter.Utils.insertKeyframe( track, 20.000005 );
-			assert.equal( index, 3, 'tolerance - index' );
-			assert.smartEqual( Array.from( track.times ), [ 5, 10, 15, 20, 25, 30 ], 'tolerance - time' );
-			assert.smartEqual( Array.from( track.values ), [ 0, 5, 1, 4, 2, 3, 3, 2, 4, 1, 5, 0 ], 'tolerance - value' );
-
-		} );
-
-		QUnit.test( 'utils - mergeMorphTargetTracks', ( assert ) => {
-
-			var trackA = new NumberKeyframeTrack(
-				'foo.morphTargetInfluences[a]',
-				[ 5, 10, 15, 20, 25, 30 ],
-				[ 0, 0.2, 0.4, 0.6, 0.8, 1.0 ],
-				InterpolateLinear
-			);
-
-			var trackB = new NumberKeyframeTrack(
-				'foo.morphTargetInfluences[b]',
-				[ 10, 50 ],
-				[ 0.25, 0.75 ],
-				InterpolateLinear
-			);
-
-			var geometry = new BufferGeometry();
-			var position = new BufferAttribute( new Float32Array( [ 0, 0, 0, 0, 0, 1, 1, 0, 1 ] ), 3 );
-			geometry.setAttribute( 'position',	position );
-			geometry.morphAttributes.position = [ position, position ];
-
-			var mesh = new Mesh( geometry );
-			mesh.name = 'foo';
-			mesh.morphTargetDictionary.a = 0;
-			mesh.morphTargetDictionary.b = 1;
-
-			var root = new Object3D();
-			root.add( mesh );
-
-			var clip = new AnimationClip( 'waltz', undefined, [ trackA, trackB ] );
-			clip = GLTFExporter.Utils.mergeMorphTargetTracks( clip, root );
-
-			assert.equal( clip.tracks.length, 1, 'tracks are merged' );
-
-			var track = clip.tracks[ 0 ];
-
-			assert.smartEqual( Array.from( track.times ), [ 5, 10, 15, 20, 25, 30, 50 ], 'all keyframes are present' );
-
-			var expectedValues = [ 0, 0.25, 0.2, 0.25, 0.4, 0.3125, 0.6, 0.375, 0.8, 0.4375, 1.0, 0.5, 1.0, 0.75 ];
-
-			for ( var i = 0; i < track.values.length; i ++ ) {
-
-				assert.numEqual( track.values[ i ], expectedValues[ i ], 'all values are merged or interpolated - ' + i );
-
-			}
-
-		} );
-
 		QUnit.test( 'parse - KHR_lights_punctual extension', ( assert ) => {
 
 			const done = assert.async();

+ 4 - 0
test/unit/example/loaders/GLTFLoader.tests.js

@@ -22,6 +22,10 @@ export default QUnit.module( 'Loaders', () => {
 
 		} );
 
+	} );
+
+	QUnit.module( 'GLTFLoader-webonly', () => {
+
 		QUnit.test( 'parse - basic', ( assert ) => {
 
 			var done = assert.async();