Pārlūkot izejas kodu

Merge pull request #12778 from OndrejSpanel/unitTestFixes

Fix some unit tests not testing properly
Mr.doob 7 gadi atpakaļ
vecāks
revīzija
17452bb937

+ 2 - 2
test/unit/src/core/Face3.tests.js

@@ -23,7 +23,7 @@ export default QUnit.module( 'Core', () => {
 		QUnit.test( "copy", ( assert ) => {
 		QUnit.test( "copy", ( assert ) => {
 
 
 			var instance = new Face3( 0, 1, 2, new Vector3( 0, 1, 0 ), new Color( 0.25, 0.5, 0.75 ), 2 );
 			var instance = new Face3( 0, 1, 2, new Vector3( 0, 1, 0 ), new Color( 0.25, 0.5, 0.75 ), 2 );
-			var copiedInstance = instance.copy( instance );
+			var copiedInstance = new Face3().copy( instance );
 
 
 			checkCopy( copiedInstance, assert );
 			checkCopy( copiedInstance, assert );
 			checkVertexAndColors( copiedInstance, assert );
 			checkVertexAndColors( copiedInstance, assert );
@@ -36,7 +36,7 @@ export default QUnit.module( 'Core', () => {
 				[ new Vector3( 0, 1, 0 ), new Vector3( 1, 0, 1 ) ],
 				[ new Vector3( 0, 1, 0 ), new Vector3( 1, 0, 1 ) ],
 				[ new Color( 0.25, 0.5, 0.75 ), new Color( 1, 0, 0.4 ) ],
 				[ new Color( 0.25, 0.5, 0.75 ), new Color( 1, 0, 0.4 ) ],
 				2 );
 				2 );
-			var copiedInstance = instance.copy( instance );
+			var copiedInstance = new Face3().copy( instance );
 
 
 			checkCopy( copiedInstance, assert );
 			checkCopy( copiedInstance, assert );
 			checkVertexAndColorArrays( copiedInstance, assert );
 			checkVertexAndColorArrays( copiedInstance, assert );

+ 1 - 1
test/unit/src/core/InterleavedBuffer.tests.js

@@ -34,7 +34,7 @@ export default QUnit.module( 'Core', () => {
 		// PROPERTIES
 		// PROPERTIES
 		QUnit.test( "needsUpdate", ( assert ) => {
 		QUnit.test( "needsUpdate", ( assert ) => {
 
 
-			var a = new InterleavedBuffer( new Float32Array( [ 1, 2, 3, 4 ], 2 ) );
+			var a = new InterleavedBuffer( new Float32Array( [ 1, 2, 3, 4 ] ), 2 );
 
 
 			a.needsUpdate = true;
 			a.needsUpdate = true;
 
 

+ 1 - 1
test/unit/src/core/Raycaster.tests.js

@@ -114,7 +114,7 @@ export default QUnit.module( 'Core', () => {
 				x: 0,
 				x: 0,
 				y: 0
 				y: 0
 			}, camera );
 			}, camera );
-			assert.ok( rayDirection.x === 0, rayDirection.y === 0, rayDirection.z === - 1,
+			assert.ok( rayDirection.x === 0 && rayDirection.y === 0 && rayDirection.z === - 1,
 				"camera is looking straight to -z and so does the ray in the middle of the screen" );
 				"camera is looking straight to -z and so does the ray in the middle of the screen" );
 
 
 			var step = 0.1;
 			var step = 0.1;

+ 2 - 12
test/unit/src/geometries/TetrahedronGeometry.tests.js

@@ -24,12 +24,7 @@ export default QUnit.module( 'Geometries', () => {
 			geometries = [
 			geometries = [
 				new TetrahedronGeometry(),
 				new TetrahedronGeometry(),
 				new TetrahedronGeometry( parameters.radius ),
 				new TetrahedronGeometry( parameters.radius ),
-				new TetrahedronGeometry( parameters.radius, parameters.widthSegments ),
-				new TetrahedronGeometry( parameters.radius, parameters.widthSegments, parameters.heightSegments ),
-				new TetrahedronGeometry( parameters.radius, parameters.widthSegments, parameters.heightSegments, parameters.phiStart ),
-				new TetrahedronGeometry( parameters.radius, parameters.widthSegments, parameters.heightSegments, parameters.phiStart, parameters.phiLength ),
-				new TetrahedronGeometry( parameters.radius, parameters.widthSegments, parameters.heightSegments, parameters.phiStart, parameters.phiLength, parameters.thetaStart ),
-				new TetrahedronGeometry( parameters.radius, parameters.widthSegments, parameters.heightSegments, parameters.phiStart, parameters.phiLength, parameters.thetaStart, parameters.thetaLength ),
+				new TetrahedronGeometry( parameters.radius, parameters.detail )
 			];
 			];
 
 
 		} );
 		} );
@@ -70,12 +65,7 @@ export default QUnit.module( 'Geometries', () => {
 			geometries = [
 			geometries = [
 				new TetrahedronBufferGeometry(),
 				new TetrahedronBufferGeometry(),
 				new TetrahedronBufferGeometry( parameters.radius ),
 				new TetrahedronBufferGeometry( parameters.radius ),
-				new TetrahedronBufferGeometry( parameters.radius, parameters.widthSegments ),
-				new TetrahedronBufferGeometry( parameters.radius, parameters.widthSegments, parameters.heightSegments ),
-				new TetrahedronBufferGeometry( parameters.radius, parameters.widthSegments, parameters.heightSegments, parameters.phiStart ),
-				new TetrahedronBufferGeometry( parameters.radius, parameters.widthSegments, parameters.heightSegments, parameters.phiStart, parameters.phiLength ),
-				new TetrahedronBufferGeometry( parameters.radius, parameters.widthSegments, parameters.heightSegments, parameters.phiStart, parameters.phiLength, parameters.thetaStart ),
-				new TetrahedronBufferGeometry( parameters.radius, parameters.widthSegments, parameters.heightSegments, parameters.phiStart, parameters.phiLength, parameters.thetaStart, parameters.thetaLength ),
+				new TetrahedronBufferGeometry( parameters.radius, parameters.detail )
 			];
 			];
 
 
 		} );
 		} );

+ 3 - 2
test/unit/src/math/Frustum.tests.js

@@ -13,7 +13,7 @@ import { Matrix4 } from '../../../../src/math/Matrix4';
 import { Box3 } from '../../../../src/math/Box3';
 import { Box3 } from '../../../../src/math/Box3';
 import { Mesh } from '../../../../src/objects/Mesh';
 import { Mesh } from '../../../../src/objects/Mesh';
 import { BoxGeometry } from '../../../../src/geometries/BoxGeometry';
 import { BoxGeometry } from '../../../../src/geometries/BoxGeometry';
-import { zero3, one3 } from './Constants.tests';
+import { zero3, one3, eps } from './Constants.tests';
 
 
 const unit3 = new Vector3( 1, 0, 0 );
 const unit3 = new Vector3( 1, 0, 0 );
 
 
@@ -262,7 +262,8 @@ export default QUnit.module( 'Maths', () => {
 			intersects = a.intersectsBox( box );
 			intersects = a.intersectsBox( box );
 			assert.notOk( intersects, "No intersection" );
 			assert.notOk( intersects, "No intersection" );
 
 
-			box.translate( - 1, - 1, - 1 );
+			// add eps so that we prevent box touching the frustum, which might intersect depending on floating point numerics
+			box.translate( new Vector3( - 1 - eps, - 1 - eps, - 1 - eps ) );
 
 
 			intersects = a.intersectsBox( box );
 			intersects = a.intersectsBox( box );
 			assert.ok( intersects, "Successful intersection" );
 			assert.ok( intersects, "Successful intersection" );

+ 16 - 10
test/unit/src/math/Quaternion.tests.js

@@ -160,6 +160,12 @@ function slerpTestSkeleton( doSlerp, maxError, assert ) {
 
 
 }
 }
 
 
+function changeEulerOrder( euler, order ) {
+
+	return new Euler( euler.x, euler.y, euler.z, order );
+
+}
+
 export default QUnit.module( 'Maths', () => {
 export default QUnit.module( 'Maths', () => {
 
 
 	QUnit.module( 'Quaternion', () => {
 	QUnit.module( 'Quaternion', () => {
@@ -332,8 +338,8 @@ export default QUnit.module( 'Maths', () => {
 			// ensure euler conversion for Quaternion matches that of Matrix4
 			// ensure euler conversion for Quaternion matches that of Matrix4
 			for ( var i = 0; i < orders.length; i ++ ) {
 			for ( var i = 0; i < orders.length; i ++ ) {
 
 
-				var q = new Quaternion().setFromEuler( eulerAngles, orders[ i ] );
-				var m = new Matrix4().makeRotationFromEuler( eulerAngles, orders[ i ] );
+				var q = new Quaternion().setFromEuler( changeEulerOrder( eulerAngles, orders[ i ] ) );
+				var m = new Matrix4().makeRotationFromEuler( changeEulerOrder( eulerAngles, orders[ i ] ) );
 				var q2 = new Quaternion().setFromRotationMatrix( m );
 				var q2 = new Quaternion().setFromRotationMatrix( m );
 
 
 				assert.ok( qSub( q, q2 ).length() < 0.001, "Passed!" );
 				assert.ok( qSub( q, q2 ).length() < 0.001, "Passed!" );
@@ -450,15 +456,15 @@ export default QUnit.module( 'Maths', () => {
 
 
 			var angles = [ new Euler( 1, 0, 0 ), new Euler( 0, 1, 0 ), new Euler( 0, 0, 1 ) ];
 			var angles = [ new Euler( 1, 0, 0 ), new Euler( 0, 1, 0 ), new Euler( 0, 0, 1 ) ];
 
 
-			var q1 = new Quaternion().setFromEuler( angles[ 0 ], "XYZ" );
-			var q2 = new Quaternion().setFromEuler( angles[ 1 ], "XYZ" );
-			var q3 = new Quaternion().setFromEuler( angles[ 2 ], "XYZ" );
+			var q1 = new Quaternion().setFromEuler( changeEulerOrder( angles[ 0 ], "XYZ" ) );
+			var q2 = new Quaternion().setFromEuler( changeEulerOrder( angles[ 1 ], "XYZ" ) );
+			var q3 = new Quaternion().setFromEuler( changeEulerOrder( angles[ 2 ], "XYZ" ) );
 
 
 			var q = new Quaternion().multiplyQuaternions( q1, q2 ).multiply( q3 );
 			var q = new Quaternion().multiplyQuaternions( q1, q2 ).multiply( q3 );
 
 
-			var m1 = new Matrix4().makeRotationFromEuler( angles[ 0 ], "XYZ" );
-			var m2 = new Matrix4().makeRotationFromEuler( angles[ 1 ], "XYZ" );
-			var m3 = new Matrix4().makeRotationFromEuler( angles[ 2 ], "XYZ" );
+			var m1 = new Matrix4().makeRotationFromEuler( changeEulerOrder( angles[ 0 ], "XYZ" ) );
+			var m2 = new Matrix4().makeRotationFromEuler( changeEulerOrder( angles[ 1 ], "XYZ" ) );
+			var m3 = new Matrix4().makeRotationFromEuler( changeEulerOrder( angles[ 2 ], "XYZ" ) );
 
 
 			var m = new Matrix4().multiplyMatrices( m1, m2 ).multiply( m3 );
 			var m = new Matrix4().multiplyMatrices( m1, m2 ).multiply( m3 );
 
 
@@ -563,8 +569,8 @@ export default QUnit.module( 'Maths', () => {
 
 
 				for ( var j = 0; j < angles.length; j ++ ) {
 				for ( var j = 0; j < angles.length; j ++ ) {
 
 
-					var q = new Quaternion().setFromEuler( angles[ j ], orders[ i ] );
-					var m = new Matrix4().makeRotationFromEuler( angles[ j ], orders[ i ] );
+					var q = new Quaternion().setFromEuler( changeEulerOrder( angles[ j ], orders[ i ] ) );
+					var m = new Matrix4().makeRotationFromEuler( changeEulerOrder( angles[ j ], orders[ i ] ) );
 
 
 					var v0 = new Vector3( 1, 0, 0 );
 					var v0 = new Vector3( 1, 0, 0 );
 					var qv = v0.clone().applyQuaternion( q );
 					var qv = v0.clone().applyQuaternion( q );