Browse Source

Tests: Unit Tests for Extras (#25401)

* Stub Earcut unit tests.

Stub Earcut unit tests.

* Stub ImageUtils unit tests.

Stub ImageUtils unit tests.

* Stub PMREMGenerator unit tests.

Stub PMREMGenerator unit tests.

* Update DataUtils.tests.js

review.

* Update ShapeUtils.tests.js

review.

* Update Curve.tests.js

Curve.type should be Curve
Stub missing member tests.

* Update CurvePath.tests.js

CurvePath extends from Curve
Curve.type should be Curve
Stub missing member tests.
Remove tests for members that don't exist in source.

* Update Interpolations.tests.js

review

* Update Path.tests.js

Path extends from CurvePath
Path.type should be Path
Stub missing member tests.

* Update Shape.tests.js

Shape extends from Path
Shape.type should be Shape
Stub missing member tests.

* Update ShapePath.tests.js

ShapePath.type should be ShapePath
Stub missing member tests.

* Update CatmullRomCurve3.tests.js

CatmullRomCurve3 extends from Curve
CatmullRomCurve3.type should be CatmullRomCurve3
CatmullRomCurve3.isCatmullRomCurve3 should be true
Stub missing member tests.

* Update ArcCurve.tests.js

ArcCurve extends from EllipseCurve
ArcCurve.type should be ArcCurve
ArcCurve.isArcCurve should be true

* Update CubicBezierCurve.tests.js

CubicBezierCurve extends from Curve
CubicBezierCurve.type should be CubicBezierCurve
CubicBezierCurve.isCubicBezierCurve should be true
Stub missing member tests.

* Update CubicBezierCurve3.tests.js

CubicBezierCurve3 extends from Curve
CubicBezierCurve3.type should be CubicBezierCurve3
CubicBezierCurve3.isCubicBezierCurve3 should be true
Stub missing member tests.

* Update EllipseCurve.tests.js

EllipseCurve extends from Curve
EllipseCurve.type should be EllipseCurve
EllipseCurve.isEllipseCurve should be true
Stub missing member tests.

* Update LineCurve.tests.js

LineCurve extends from Curve
LineCurve.type should be LineCurve
LineCurve.isLineCurve should be true
Stub missing member tests.

* Update LineCurve3.tests.js

LineCurve3 extends from Curve
LineCurve3.type should be LineCurve3
LineCurve3.isLineCurve3 should be true
Stub missing member tests.

* Update QuadraticBezierCurve.tests.js

QuadraticBezierCurve extends from Curve
QuadraticBezierCurve.type should be QuadraticBezierCurve
QuadraticBezierCurve.isQuadraticBezierCurve should be true
Stub missing member tests.

* Update QuadraticBezierCurve3.tests.js

QuadraticBezierCurve3 extends from Curve
QuadraticBezierCurve3.type should be QuadraticBezierCurve3
QuadraticBezierCurve3.isQuadraticBezierCurve3 should be true
Stub missing member tests.

* Update SplineCurve.tests.js

SplineCurve extends from Curve
SplineCurve.type should be SplineCurve
SplineCurve.isSplineCurve should be true
Stub missing member tests.
Ed Preston 2 years ago
parent
commit
295d983e5c

+ 1 - 1
test/unit/src/extras/DataUtils.tests.js

@@ -6,7 +6,7 @@ export default QUnit.module( 'Extras', () => {
 
 
 	QUnit.module( 'DataUtils', () => {
 	QUnit.module( 'DataUtils', () => {
 
 
-		// PUBLIC STUFF
+		// PUBLIC
 		QUnit.test( 'toHalfFloat', ( assert ) => {
 		QUnit.test( 'toHalfFloat', ( assert ) => {
 
 
 			assert.ok( DataUtils.toHalfFloat( 0 ) === 0, 'Passed!' );
 			assert.ok( DataUtils.toHalfFloat( 0 ) === 0, 'Passed!' );

+ 18 - 0
test/unit/src/extras/Earcut.tests.js

@@ -0,0 +1,18 @@
+/* global QUnit */
+
+// import { Earcut } from '../../../../src/extras/Earcut.js';
+
+export default QUnit.module( 'Extras', () => {
+
+	QUnit.module( 'Earcut', () => {
+
+		// Public
+		QUnit.todo( 'triangulate', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+	} );
+
+} );

+ 24 - 0
test/unit/src/extras/ImageUtils.tests.js

@@ -0,0 +1,24 @@
+/* global QUnit */
+
+// import { ImageUtils } from '../../../../src/extras/ImageUtils.js';
+
+export default QUnit.module( 'Extras', () => {
+
+	QUnit.module( 'ImageUtils', () => {
+
+		// STATIC
+		QUnit.todo( 'getDataURL', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'sRGBToLinear', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+	} );
+
+} );

+ 55 - 0
test/unit/src/extras/PMREMGenerator.tests.js

@@ -0,0 +1,55 @@
+/* global QUnit */
+
+// import { PMREMGenerator } from '../../../../src/extras/PMREMGenerator.js';
+
+export default QUnit.module( 'Extras', () => {
+
+	QUnit.module( 'PMREMGenerator', () => {
+
+		// INSTANCING
+		QUnit.todo( 'Instancing', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		// PUBLIC
+		QUnit.todo( 'fromScene', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'fromEquirectangular', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'fromCubemap', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'compileCubemapShader', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'compileEquirectangularShader', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'dispose', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+	} );
+
+} );

+ 1 - 1
test/unit/src/extras/ShapeUtils.tests.js

@@ -6,7 +6,7 @@ export default QUnit.module( 'Extras', () => {
 
 
 	QUnit.module( 'ShapeUtils', () => {
 	QUnit.module( 'ShapeUtils', () => {
 
 
-		// PUBLIC STUFF
+		// STATIC
 		QUnit.todo( 'area', ( assert ) => {
 		QUnit.todo( 'area', ( assert ) => {
 
 
 			assert.ok( false, 'everything\'s gonna be alright' );
 			assert.ok( false, 'everything\'s gonna be alright' );

+ 43 - 2
test/unit/src/extras/core/Curve.tests.js

@@ -1,6 +1,6 @@
 /* global QUnit */
 /* global QUnit */
 
 
-// import { Curve } from '../../../../../src/extras/core/Curve.js';
+import { Curve } from '../../../../../src/extras/core/Curve.js';
 
 
 export default QUnit.module( 'Extras', () => {
 export default QUnit.module( 'Extras', () => {
 
 
@@ -15,7 +15,24 @@ export default QUnit.module( 'Extras', () => {
 
 
 			} );
 			} );
 
 
-			// PUBLIC STUFF
+			// PROPERTIES
+			QUnit.test( 'type', ( assert ) => {
+
+				const object = new Curve();
+				assert.ok(
+					object.type === 'Curve',
+					'Curve.type should be Curve'
+				);
+
+			} );
+
+			QUnit.todo( 'arcLengthDivisions', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			// PUBLIC
 			QUnit.todo( 'getPoint', ( assert ) => {
 			QUnit.todo( 'getPoint', ( assert ) => {
 
 
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
@@ -82,6 +99,30 @@ export default QUnit.module( 'Extras', () => {
 
 
 			} );
 			} );
 
 
+			QUnit.todo( 'clone', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'copy', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'toJSON', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'fromJSON', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
 		} );
 		} );
 
 
 	} );
 	} );

+ 36 - 7
test/unit/src/extras/core/CurvePath.tests.js

@@ -1,6 +1,8 @@
 /* global QUnit */
 /* global QUnit */
 
 
-// import { CurvePath } from '../../../../../src/extras/core/CurvePath.js';
+import { CurvePath } from '../../../../../src/extras/core/CurvePath.js';
+
+import { Curve } from '../../../../../src/extras/core/Curve.js';
 
 
 export default QUnit.module( 'Extras', () => {
 export default QUnit.module( 'Extras', () => {
 
 
@@ -9,9 +11,13 @@ export default QUnit.module( 'Extras', () => {
 		QUnit.module( 'CurvePath', () => {
 		QUnit.module( 'CurvePath', () => {
 
 
 			// INHERITANCE
 			// INHERITANCE
-			QUnit.todo( 'Extending', ( assert ) => {
+			QUnit.test( 'Extending', ( assert ) => {
 
 
-				assert.ok( false, 'everything\'s gonna be alright' );
+				const object = new CurvePath();
+				assert.strictEqual(
+					object instanceof Curve, true,
+					'CurvePath extends from Curve'
+				);
 
 
 			} );
 			} );
 
 
@@ -22,7 +28,30 @@ export default QUnit.module( 'Extras', () => {
 
 
 			} );
 			} );
 
 
-			// PUBLIC STUFF
+			// PROPERTIES
+			QUnit.test( 'type', ( assert ) => {
+
+				const object = new Curve();
+				assert.ok(
+					object.type === 'Curve',
+					'Curve.type should be Curve'
+				);
+
+			} );
+
+			QUnit.todo( 'curves', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'autoClose', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			// PUBLIC
 			QUnit.todo( 'add', ( assert ) => {
 			QUnit.todo( 'add', ( assert ) => {
 
 
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
@@ -71,19 +100,19 @@ export default QUnit.module( 'Extras', () => {
 
 
 			} );
 			} );
 
 
-			QUnit.todo( 'createPointsGeometry', ( assert ) => {
+			QUnit.todo( 'copy', ( assert ) => {
 
 
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
 
 
 			} );
 			} );
 
 
-			QUnit.todo( 'createSpacedPointsGeometry', ( assert ) => {
+			QUnit.todo( 'toJSON', ( assert ) => {
 
 
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
 
 
 			} );
 			} );
 
 
-			QUnit.todo( 'createGeometry', ( assert ) => {
+			QUnit.todo( 'fromJSON', ( assert ) => {
 
 
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
 
 

+ 1 - 1
test/unit/src/extras/core/Interpolations.tests.js

@@ -8,7 +8,7 @@ export default QUnit.module( 'Extras', () => {
 
 
 		QUnit.module( 'Interpolations', () => {
 		QUnit.module( 'Interpolations', () => {
 
 
-			// PUBLIC STUFF
+			// PUBLIC
 			QUnit.todo( 'CatmullRom', ( assert ) => {
 			QUnit.todo( 'CatmullRom', ( assert ) => {
 
 
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );

+ 46 - 5
test/unit/src/extras/core/Path.tests.js

@@ -1,6 +1,8 @@
 /* global QUnit */
 /* global QUnit */
 
 
-// import { Path } from '../../../../../src/extras/core/Path.js';
+import { Path } from '../../../../../src/extras/core/Path.js';
+
+import { CurvePath } from '../../../../../src/extras/core/CurvePath.js';
 
 
 export default QUnit.module( 'Extras', () => {
 export default QUnit.module( 'Extras', () => {
 
 
@@ -9,9 +11,13 @@ export default QUnit.module( 'Extras', () => {
 		QUnit.module( 'Path', () => {
 		QUnit.module( 'Path', () => {
 
 
 			// INHERITANCE
 			// INHERITANCE
-			QUnit.todo( 'Extending', ( assert ) => {
+			QUnit.test( 'Extending', ( assert ) => {
 
 
-				assert.ok( false, 'everything\'s gonna be alright' );
+				const object = new Path();
+				assert.strictEqual(
+					object instanceof CurvePath, true,
+					'Path extends from CurvePath'
+				);
 
 
 			} );
 			} );
 
 
@@ -22,8 +28,25 @@ export default QUnit.module( 'Extras', () => {
 
 
 			} );
 			} );
 
 
-			// PUBLIC STUFF
-			QUnit.todo( 'fromPoints', ( assert ) => {
+			// PROPERTIES
+			QUnit.test( 'type', ( assert ) => {
+
+				const object = new Path();
+				assert.ok(
+					object.type === 'Path',
+					'Path.type should be Path'
+				);
+
+			} );
+
+			QUnit.todo( 'currentPoint', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			// PUBLIC
+			QUnit.todo( 'setFromPoints', ( assert ) => {
 
 
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
 
 
@@ -83,6 +106,24 @@ export default QUnit.module( 'Extras', () => {
 
 
 			} );
 			} );
 
 
+			QUnit.todo( 'copy', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'toJSON', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'fromJSON', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
 		} );
 		} );
 
 
 	} );
 	} );

+ 47 - 6
test/unit/src/extras/core/Shape.tests.js

@@ -1,6 +1,8 @@
 /* global QUnit */
 /* global QUnit */
 
 
-// import { Shape } from '../../../../../src/extras/core/Shape.js';
+import { Shape } from '../../../../../src/extras/core/Shape.js';
+
+import { Path } from '../../../../../src/extras/core/Path.js';
 
 
 export default QUnit.module( 'Extras', () => {
 export default QUnit.module( 'Extras', () => {
 
 
@@ -9,9 +11,13 @@ export default QUnit.module( 'Extras', () => {
 		QUnit.module( 'Shape', () => {
 		QUnit.module( 'Shape', () => {
 
 
 			// INHERITANCE
 			// INHERITANCE
-			QUnit.todo( 'Extending', ( assert ) => {
+			QUnit.test( 'Extending', ( assert ) => {
 
 
-				assert.ok( false, 'everything\'s gonna be alright' );
+				const object = new Shape();
+				assert.strictEqual(
+					object instanceof Path, true,
+					'Shape extends from Path'
+				);
 
 
 			} );
 			} );
 
 
@@ -22,14 +28,31 @@ export default QUnit.module( 'Extras', () => {
 
 
 			} );
 			} );
 
 
-			// PUBLIC STUFF
-			QUnit.todo( 'getPointsHoles', ( assert ) => {
+			// PROPERTIES
+			QUnit.test( 'type', ( assert ) => {
+
+				const object = new Shape();
+				assert.ok(
+					object.type === 'Shape',
+					'Shape.type should be Shape'
+				);
+
+			} );
+
+			QUnit.todo( 'uuid', ( assert ) => {
 
 
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
 
 
 			} );
 			} );
 
 
-			QUnit.todo( 'extractAllPoints', ( assert ) => {
+			QUnit.todo( 'holes', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			// PUBLIC
+			QUnit.todo( 'getPointsHoles', ( assert ) => {
 
 
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
 
 
@@ -41,6 +64,24 @@ export default QUnit.module( 'Extras', () => {
 
 
 			} );
 			} );
 
 
+			QUnit.todo( 'copy', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'toJSON', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'fromJSON', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
 		} );
 		} );
 
 
 	} );
 	} );

+ 31 - 2
test/unit/src/extras/core/ShapePath.tests.js

@@ -1,6 +1,6 @@
 /* global QUnit */
 /* global QUnit */
 
 
-// import { ShapePath } from '../../../../../src/extras/core/ShapePath.js';
+import { ShapePath } from '../../../../../src/extras/core/ShapePath.js';
 
 
 export default QUnit.module( 'Extras', () => {
 export default QUnit.module( 'Extras', () => {
 
 
@@ -15,7 +15,36 @@ export default QUnit.module( 'Extras', () => {
 
 
 			} );
 			} );
 
 
-			// PUBLIC STUFF
+			// PROPERTIES
+			QUnit.test( 'type', ( assert ) => {
+
+				const object = new ShapePath();
+				assert.ok(
+					object.type === 'ShapePath',
+					'ShapePath.type should be ShapePath'
+				);
+
+			} );
+
+			QUnit.todo( 'color', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'subPaths', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'currentPath', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			// PUBLIC
 			QUnit.todo( 'moveTo', ( assert ) => {
 			QUnit.todo( 'moveTo', ( assert ) => {
 
 
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );

+ 27 - 6
test/unit/src/extras/curves/ArcCurve.tests.js

@@ -1,6 +1,8 @@
 /* global QUnit */
 /* global QUnit */
 
 
-// import { ArcCurve } from '../../../../../src/extras/curves/ArcCurve.js';
+import { ArcCurve } from '../../../../../src/extras/curves/ArcCurve.js';
+
+import { EllipseCurve } from '../../../../../src/extras/curves/EllipseCurve.js';
 
 
 export default QUnit.module( 'Extras', () => {
 export default QUnit.module( 'Extras', () => {
 
 
@@ -9,9 +11,13 @@ export default QUnit.module( 'Extras', () => {
 		QUnit.module( 'ArcCurve', () => {
 		QUnit.module( 'ArcCurve', () => {
 
 
 			// INHERITANCE
 			// INHERITANCE
-			QUnit.todo( 'Extending', ( assert ) => {
+			QUnit.test( 'Extending', ( assert ) => {
 
 
-				assert.ok( false, 'everything\'s gonna be alright' );
+				const object = new ArcCurve();
+				assert.strictEqual(
+					object instanceof EllipseCurve, true,
+					'ArcCurve extends from EllipseCurve'
+				);
 
 
 			} );
 			} );
 
 
@@ -22,10 +28,25 @@ export default QUnit.module( 'Extras', () => {
 
 
 			} );
 			} );
 
 
-			// PUBLIC STUFF
-			QUnit.todo( 'isArcCurve', ( assert ) => {
+			// PROPERTIES
+			QUnit.test( 'type', ( assert ) => {
 
 
-				assert.ok( false, 'everything\'s gonna be alright' );
+				const object = new ArcCurve();
+				assert.ok(
+					object.type === 'ArcCurve',
+					'ArcCurve.type should be ArcCurve'
+				);
+
+			} );
+
+			// PUBLIC
+			QUnit.test( 'isArcCurve', ( assert ) => {
+
+				const object = new ArcCurve();
+				assert.ok(
+					object.isArcCurve,
+					'ArcCurve.isArcCurve should be true'
+				);
 
 
 			} );
 			} );
 
 

+ 67 - 4
test/unit/src/extras/curves/CatmullRomCurve3.tests.js

@@ -1,6 +1,8 @@
 /* global QUnit */
 /* global QUnit */
 
 
 import { CatmullRomCurve3 } from '../../../../../src/extras/curves/CatmullRomCurve3.js';
 import { CatmullRomCurve3 } from '../../../../../src/extras/curves/CatmullRomCurve3.js';
+
+import { Curve } from '../../../../../src/extras/core/Curve.js';
 import { Vector3 } from '../../../../../src/math/Vector3.js';
 import { Vector3 } from '../../../../../src/math/Vector3.js';
 
 
 export default QUnit.module( 'Extras', () => {
 export default QUnit.module( 'Extras', () => {
@@ -20,9 +22,13 @@ export default QUnit.module( 'Extras', () => {
 			/* eslint-enable */
 			/* eslint-enable */
 
 
 			// INHERITANCE
 			// INHERITANCE
-			QUnit.todo( 'Extending', ( assert ) => {
+			QUnit.test( 'Extending', ( assert ) => {
 
 
-				assert.ok( false, 'everything\'s gonna be alright' );
+				const object = new CatmullRomCurve3();
+				assert.strictEqual(
+					object instanceof Curve, true,
+					'CatmullRomCurve3 extends from Curve'
+				);
 
 
 			} );
 			} );
 
 
@@ -33,19 +39,76 @@ export default QUnit.module( 'Extras', () => {
 
 
 			} );
 			} );
 
 
-			// PUBLIC STUFF
-			QUnit.todo( 'isCatmullRomCurve3', ( assert ) => {
+			// PROPERTIES
+			QUnit.test( 'type', ( assert ) => {
+
+				const object = new CatmullRomCurve3();
+				assert.ok(
+					object.type === 'CatmullRomCurve3',
+					'CatmullRomCurve3.type should be CatmullRomCurve3'
+				);
+
+			} );
+
+			QUnit.todo( 'points', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'closed', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'curveType', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'tension', ( assert ) => {
 
 
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
 
 
 			} );
 			} );
 
 
+			// PUBLIC
+			QUnit.test( 'isCatmullRomCurve3', ( assert ) => {
+
+				const object = new CatmullRomCurve3();
+				assert.ok(
+					object.isCatmullRomCurve3,
+					'CatmullRomCurve3.isCatmullRomCurve3 should be true'
+				);
+
+			} );
+
 			QUnit.todo( 'getPoint', ( assert ) => {
 			QUnit.todo( 'getPoint', ( assert ) => {
 
 
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
 
 
 			} );
 			} );
 
 
+			QUnit.todo( 'copy', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'toJSON', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'fromJSON', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
 			// OTHERS
 			// OTHERS
 			QUnit.test( 'catmullrom check', ( assert ) => {
 			QUnit.test( 'catmullrom check', ( assert ) => {
 
 

+ 72 - 4
test/unit/src/extras/curves/CubicBezierCurve.tests.js

@@ -1,6 +1,8 @@
 /* global QUnit */
 /* global QUnit */
 
 
 import { CubicBezierCurve } from '../../../../../src/extras/curves/CubicBezierCurve.js';
 import { CubicBezierCurve } from '../../../../../src/extras/curves/CubicBezierCurve.js';
+
+import { Curve } from '../../../../../src/extras/core/Curve.js';
 import { Vector2 } from '../../../../../src/math/Vector2.js';
 import { Vector2 } from '../../../../../src/math/Vector2.js';
 
 
 export default QUnit.module( 'Extras', () => {
 export default QUnit.module( 'Extras', () => {
@@ -22,9 +24,13 @@ export default QUnit.module( 'Extras', () => {
 			} );
 			} );
 
 
 			// INHERITANCE
 			// INHERITANCE
-			QUnit.todo( 'Extending', ( assert ) => {
+			QUnit.test( 'Extending', ( assert ) => {
 
 
-				assert.ok( false, 'everything\'s gonna be alright' );
+				const object = new CubicBezierCurve();
+				assert.strictEqual(
+					object instanceof Curve, true,
+					'CubicBezierCurve extends from Curve'
+				);
 
 
 			} );
 			} );
 
 
@@ -35,15 +41,77 @@ export default QUnit.module( 'Extras', () => {
 
 
 			} );
 			} );
 
 
-			// PUBLIC STUFF
-			QUnit.todo( 'isCubicBezierCurve', ( assert ) => {
+			// PROPERTIES
+			QUnit.test( 'type', ( assert ) => {
+
+				const object = new CubicBezierCurve();
+				assert.ok(
+					object.type === 'CubicBezierCurve',
+					'CubicBezierCurve.type should be CubicBezierCurve'
+				);
+
+			} );
+
+			QUnit.todo( 'v0', ( assert ) => {
+
+				// Vector2 exists
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'v1', ( assert ) => {
 
 
+				// Vector2 exists
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
 
 
 			} );
 			} );
 
 
+			QUnit.todo( 'v2', ( assert ) => {
+
+				// Vector2 exists
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'v3', ( assert ) => {
+
+				// Vector2 exists
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			// PUBLIC
+			QUnit.test( 'isCubicBezierCurve', ( assert ) => {
+
+				const object = new CubicBezierCurve();
+				assert.ok(
+					object.isCubicBezierCurve,
+					'CubicBezierCurve.isCubicBezierCurve should be true'
+				);
+
+			} );
+
 			QUnit.todo( 'getPoint', ( assert ) => {
 			QUnit.todo( 'getPoint', ( assert ) => {
 
 
+				// getPoint( t, optionalTarget = new Vector2() )
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'copy', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'toJSON', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'fromJSON', ( assert ) => {
+
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
 
 
 			} );
 			} );

+ 72 - 4
test/unit/src/extras/curves/CubicBezierCurve3.tests.js

@@ -1,6 +1,8 @@
 /* global QUnit */
 /* global QUnit */
 
 
 import { CubicBezierCurve3 } from '../../../../../src/extras/curves/CubicBezierCurve3.js';
 import { CubicBezierCurve3 } from '../../../../../src/extras/curves/CubicBezierCurve3.js';
+
+import { Curve } from '../../../../../src/extras/core/Curve.js';
 import { Vector3 } from '../../../../../src/math/Vector3.js';
 import { Vector3 } from '../../../../../src/math/Vector3.js';
 
 
 export default QUnit.module( 'Extras', () => {
 export default QUnit.module( 'Extras', () => {
@@ -22,9 +24,13 @@ export default QUnit.module( 'Extras', () => {
 			} );
 			} );
 
 
 			// INHERITANCE
 			// INHERITANCE
-			QUnit.todo( 'Extending', ( assert ) => {
+			QUnit.test( 'Extending', ( assert ) => {
 
 
-				assert.ok( false, 'everything\'s gonna be alright' );
+				const object = new CubicBezierCurve3();
+				assert.strictEqual(
+					object instanceof Curve, true,
+					'CubicBezierCurve3 extends from Curve'
+				);
 
 
 			} );
 			} );
 
 
@@ -35,15 +41,77 @@ export default QUnit.module( 'Extras', () => {
 
 
 			} );
 			} );
 
 
-			// PUBLIC STUFF
-			QUnit.todo( 'isCubicBezierCurve3', ( assert ) => {
+			// PROPERTIES
+			QUnit.test( 'type', ( assert ) => {
+
+				const object = new CubicBezierCurve3();
+				assert.ok(
+					object.type === 'CubicBezierCurve3',
+					'CubicBezierCurve3.type should be CubicBezierCurve3'
+				);
+
+			} );
+
+			QUnit.todo( 'v0', ( assert ) => {
+
+				// Vector3 exists
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'v1', ( assert ) => {
 
 
+				// Vector3 exists
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
 
 
 			} );
 			} );
 
 
+			QUnit.todo( 'v2', ( assert ) => {
+
+				// Vector3 exists
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'v3', ( assert ) => {
+
+				// Vector3 exists
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			// PUBLIC
+			QUnit.test( 'isCubicBezierCurve3', ( assert ) => {
+
+				const object = new CubicBezierCurve3();
+				assert.ok(
+					object.isCubicBezierCurve3,
+					'CubicBezierCurve3.isCubicBezierCurve3 should be true'
+				);
+
+			} );
+
 			QUnit.todo( 'getPoint', ( assert ) => {
 			QUnit.todo( 'getPoint', ( assert ) => {
 
 
+				// getPoint( t, optionalTarget = new Vector3() )
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'copy', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'toJSON', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'fromJSON', ( assert ) => {
+
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
 
 
 			} );
 			} );

+ 91 - 4
test/unit/src/extras/curves/EllipseCurve.tests.js

@@ -1,6 +1,8 @@
 /* global QUnit */
 /* global QUnit */
 
 
 import { EllipseCurve } from '../../../../../src/extras/curves/EllipseCurve.js';
 import { EllipseCurve } from '../../../../../src/extras/curves/EllipseCurve.js';
+
+import { Curve } from '../../../../../src/extras/core/Curve.js';
 import { Vector2 } from '../../../../../src/math/Vector2.js';
 import { Vector2 } from '../../../../../src/math/Vector2.js';
 
 
 export default QUnit.module( 'Extras', () => {
 export default QUnit.module( 'Extras', () => {
@@ -23,9 +25,13 @@ export default QUnit.module( 'Extras', () => {
 			} );
 			} );
 
 
 			// INHERITANCE
 			// INHERITANCE
-			QUnit.todo( 'Extending', ( assert ) => {
+			QUnit.test( 'Extending', ( assert ) => {
 
 
-				assert.ok( false, 'everything\'s gonna be alright' );
+				const object = new EllipseCurve();
+				assert.strictEqual(
+					object instanceof Curve, true,
+					'EllipseCurve extends from Curve'
+				);
 
 
 			} );
 			} );
 
 
@@ -36,19 +42,100 @@ export default QUnit.module( 'Extras', () => {
 
 
 			} );
 			} );
 
 
-			// PUBLIC STUFF
-			QUnit.todo( 'isEllipseCurve', ( assert ) => {
+			// PROPERTIES
+			QUnit.test( 'type', ( assert ) => {
+
+				const object = new EllipseCurve();
+				assert.ok(
+					object.type === 'EllipseCurve',
+					'EllipseCurve.type should be EllipseCurve'
+				);
+
+			} );
+
+			QUnit.todo( 'aX', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'aY', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'xRadius', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'yRadius', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'aStartAngle', ( assert ) => {
 
 
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
 
 
 			} );
 			} );
 
 
+			QUnit.todo( 'aEndAngle', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'aClockwise', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'aRotation', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			// PUBLIC
+			QUnit.test( 'isEllipseCurve', ( assert ) => {
+
+				const object = new EllipseCurve();
+				assert.ok(
+					object.isEllipseCurve,
+					'EllipseCurve.isEllipseCurve should be true'
+				);
+
+			} );
+
 			QUnit.todo( 'getPoint', ( assert ) => {
 			QUnit.todo( 'getPoint', ( assert ) => {
 
 
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
 
 
 			} );
 			} );
 
 
+			QUnit.todo( 'copy', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'toJSON', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'fromJSON', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
 			// OTHERS
 			// OTHERS
 			QUnit.test( 'Simple curve', ( assert ) => {
 			QUnit.test( 'Simple curve', ( assert ) => {
 
 

+ 55 - 4
test/unit/src/extras/curves/LineCurve.tests.js

@@ -1,6 +1,8 @@
 /* global QUnit */
 /* global QUnit */
 
 
 import { LineCurve } from '../../../../../src/extras/curves/LineCurve.js';
 import { LineCurve } from '../../../../../src/extras/curves/LineCurve.js';
+
+import { Curve } from '../../../../../src/extras/core/Curve.js';
 import { Vector2 } from '../../../../../src/math/Vector2.js';
 import { Vector2 } from '../../../../../src/math/Vector2.js';
 
 
 export default QUnit.module( 'Extras', () => {
 export default QUnit.module( 'Extras', () => {
@@ -25,9 +27,13 @@ export default QUnit.module( 'Extras', () => {
 			} );
 			} );
 
 
 			// INHERITANCE
 			// INHERITANCE
-			QUnit.todo( 'Extending', ( assert ) => {
+			QUnit.test( 'Extending', ( assert ) => {
 
 
-				assert.ok( false, 'everything\'s gonna be alright' );
+				const object = new LineCurve();
+				assert.strictEqual(
+					object instanceof Curve, true,
+					'LineCurve extends from Curve'
+				);
 
 
 			} );
 			} );
 
 
@@ -38,13 +44,40 @@ export default QUnit.module( 'Extras', () => {
 
 
 			} );
 			} );
 
 
-			// PUBLIC STUFF
-			QUnit.todo( 'isLineCurve', ( assert ) => {
+			// PROPERTIES
+			QUnit.test( 'type', ( assert ) => {
+
+				const object = new LineCurve();
+				assert.ok(
+					object.type === 'LineCurve',
+					'LineCurve.type should be LineCurve'
+				);
+
+			} );
+
+			QUnit.todo( 'v1', ( assert ) => {
 
 
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
 
 
 			} );
 			} );
 
 
+			QUnit.todo( 'v2', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			// PUBLIC
+			QUnit.test( 'isLineCurve', ( assert ) => {
+
+				const object = new LineCurve();
+				assert.ok(
+					object.isLineCurve,
+					'LineCurve.isLineCurve should be true'
+				);
+
+			} );
+
 			QUnit.todo( 'getPoint', ( assert ) => {
 			QUnit.todo( 'getPoint', ( assert ) => {
 
 
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
@@ -86,6 +119,24 @@ export default QUnit.module( 'Extras', () => {
 
 
 			} );
 			} );
 
 
+			QUnit.todo( 'copy', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'toJSON', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'fromJSON', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
 			// OTHERS
 			// OTHERS
 			QUnit.test( 'Simple curve', ( assert ) => {
 			QUnit.test( 'Simple curve', ( assert ) => {
 
 

+ 57 - 4
test/unit/src/extras/curves/LineCurve3.tests.js

@@ -1,6 +1,8 @@
 /* global QUnit */
 /* global QUnit */
 
 
 import { LineCurve3 } from '../../../../../src/extras/curves/LineCurve3.js';
 import { LineCurve3 } from '../../../../../src/extras/curves/LineCurve3.js';
+
+import { Curve } from '../../../../../src/extras/core/Curve.js';
 import { Vector3 } from '../../../../../src/math/Vector3.js';
 import { Vector3 } from '../../../../../src/math/Vector3.js';
 
 
 export default QUnit.module( 'Extras', () => {
 export default QUnit.module( 'Extras', () => {
@@ -25,9 +27,13 @@ export default QUnit.module( 'Extras', () => {
 			} );
 			} );
 
 
 			// INHERITANCE
 			// INHERITANCE
-			QUnit.todo( 'Extending', ( assert ) => {
+			QUnit.test( 'Extending', ( assert ) => {
 
 
-				assert.ok( false, 'everything\'s gonna be alright' );
+				const object = new LineCurve3();
+				assert.strictEqual(
+					object instanceof Curve, true,
+					'LineCurve3 extends from Curve'
+				);
 
 
 			} );
 			} );
 
 
@@ -38,13 +44,42 @@ export default QUnit.module( 'Extras', () => {
 
 
 			} );
 			} );
 
 
-			// PUBLIC STUFF
-			QUnit.todo( 'isCatmullRomCurve3', ( assert ) => {
+			// PROPERTIES
+			QUnit.test( 'type', ( assert ) => {
+
+				const object = new LineCurve3();
+				assert.ok(
+					object.type === 'LineCurve3',
+					'LineCurve3.type should be LineCurve3'
+				);
+
+			} );
+
+			QUnit.todo( 'v1', ( assert ) => {
 
 
+				// Vector3 exists
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
 
 
 			} );
 			} );
 
 
+			QUnit.todo( 'v2', ( assert ) => {
+
+				// Vector3 exists
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			// PUBLIC
+			QUnit.test( 'isLineCurve3', ( assert ) => {
+
+				const object = new LineCurve3();
+				assert.ok(
+					object.isLineCurve3,
+					'LineCurve3.isLineCurve3 should be true'
+				);
+
+			} );
+
 			QUnit.todo( 'getPoint', ( assert ) => {
 			QUnit.todo( 'getPoint', ( assert ) => {
 
 
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
@@ -73,6 +108,24 @@ export default QUnit.module( 'Extras', () => {
 
 
 			} );
 			} );
 
 
+			QUnit.todo( 'copy', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'toJSON', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'fromJSON', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
 			// OTHERS
 			// OTHERS
 			QUnit.test( 'Simple curve', ( assert ) => {
 			QUnit.test( 'Simple curve', ( assert ) => {
 
 

+ 64 - 4
test/unit/src/extras/curves/QuadraticBezierCurve.tests.js

@@ -1,6 +1,8 @@
 /* global QUnit */
 /* global QUnit */
 
 
 import { QuadraticBezierCurve } from '../../../../../src/extras/curves/QuadraticBezierCurve.js';
 import { QuadraticBezierCurve } from '../../../../../src/extras/curves/QuadraticBezierCurve.js';
+
+import { Curve } from '../../../../../src/extras/core/Curve.js';
 import { Vector2 } from '../../../../../src/math/Vector2.js';
 import { Vector2 } from '../../../../../src/math/Vector2.js';
 
 
 export default QUnit.module( 'Extras', () => {
 export default QUnit.module( 'Extras', () => {
@@ -21,9 +23,13 @@ export default QUnit.module( 'Extras', () => {
 			} );
 			} );
 
 
 			// INHERITANCE
 			// INHERITANCE
-			QUnit.todo( 'Extending', ( assert ) => {
+			QUnit.test( 'Extending', ( assert ) => {
 
 
-				assert.ok( false, 'everything\'s gonna be alright' );
+				const object = new QuadraticBezierCurve();
+				assert.strictEqual(
+					object instanceof Curve, true,
+					'QuadraticBezierCurve extends from Curve'
+				);
 
 
 			} );
 			} );
 
 
@@ -34,19 +40,73 @@ export default QUnit.module( 'Extras', () => {
 
 
 			} );
 			} );
 
 
-			// PUBLIC STUFF
-			QUnit.todo( 'isQuadraticBezierCurve', ( assert ) => {
+			// PROPERTIES
+			QUnit.test( 'type', ( assert ) => {
+
+				const object = new QuadraticBezierCurve();
+				assert.ok(
+					object.type === 'QuadraticBezierCurve',
+					'QuadraticBezierCurve.type should be QuadraticBezierCurve'
+				);
+
+			} );
+
+			QUnit.todo( 'v0', ( assert ) => {
 
 
+				// Vector2 exists
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
 
 
 			} );
 			} );
 
 
+			QUnit.todo( 'v1', ( assert ) => {
+
+				// Vector2 exists
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'v2', ( assert ) => {
+
+				// Vector2 exists
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			// PUBLIC
+			QUnit.test( 'isQuadraticBezierCurve', ( assert ) => {
+
+				const object = new QuadraticBezierCurve();
+				assert.ok(
+					object.isQuadraticBezierCurve,
+					'QuadraticBezierCurve.isQuadraticBezierCurve should be true'
+				);
+
+			} );
+
 			QUnit.todo( 'getPoint', ( assert ) => {
 			QUnit.todo( 'getPoint', ( assert ) => {
 
 
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
 
 
 			} );
 			} );
 
 
+			QUnit.todo( 'copy', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'toJSON', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'fromJSON', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
 			// OTHERS
 			// OTHERS
 			QUnit.test( 'Simple curve', ( assert ) => {
 			QUnit.test( 'Simple curve', ( assert ) => {
 
 

+ 64 - 4
test/unit/src/extras/curves/QuadraticBezierCurve3.tests.js

@@ -1,6 +1,8 @@
 /* global QUnit */
 /* global QUnit */
 
 
 import { QuadraticBezierCurve3 } from '../../../../../src/extras/curves/QuadraticBezierCurve3.js';
 import { QuadraticBezierCurve3 } from '../../../../../src/extras/curves/QuadraticBezierCurve3.js';
+
+import { Curve } from '../../../../../src/extras/core/Curve.js';
 import { Vector3 } from '../../../../../src/math/Vector3.js';
 import { Vector3 } from '../../../../../src/math/Vector3.js';
 
 
 export default QUnit.module( 'Extras', () => {
 export default QUnit.module( 'Extras', () => {
@@ -21,9 +23,13 @@ export default QUnit.module( 'Extras', () => {
 			} );
 			} );
 
 
 			// INHERITANCE
 			// INHERITANCE
-			QUnit.todo( 'Extending', ( assert ) => {
+			QUnit.test( 'Extending', ( assert ) => {
 
 
-				assert.ok( false, 'everything\'s gonna be alright' );
+				const object = new QuadraticBezierCurve3();
+				assert.strictEqual(
+					object instanceof Curve, true,
+					'QuadraticBezierCurve3 extends from Curve'
+				);
 
 
 			} );
 			} );
 
 
@@ -34,19 +40,73 @@ export default QUnit.module( 'Extras', () => {
 
 
 			} );
 			} );
 
 
-			// PUBLIC STUFF
-			QUnit.todo( 'isQuadraticBezierCurve3', ( assert ) => {
+			// PROPERTIES
+			QUnit.test( 'type', ( assert ) => {
+
+				const object = new QuadraticBezierCurve3();
+				assert.ok(
+					object.type === 'QuadraticBezierCurve3',
+					'QuadraticBezierCurve3.type should be QuadraticBezierCurve3'
+				);
+
+			} );
+
+			QUnit.todo( 'v0', ( assert ) => {
 
 
+				// Vector3 exists
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
 
 
 			} );
 			} );
 
 
+			QUnit.todo( 'v1', ( assert ) => {
+
+				// Vector3 exists
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'v2', ( assert ) => {
+
+				// Vector3 exists
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			// PUBLIC
+			QUnit.test( 'isQuadraticBezierCurve3', ( assert ) => {
+
+				const object = new QuadraticBezierCurve3();
+				assert.ok(
+					object.isQuadraticBezierCurve3,
+					'QuadraticBezierCurve3.isQuadraticBezierCurve3 should be true'
+				);
+
+			} );
+
 			QUnit.todo( 'getPoint', ( assert ) => {
 			QUnit.todo( 'getPoint', ( assert ) => {
 
 
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
 
 
 			} );
 			} );
 
 
+			QUnit.todo( 'copy', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'toJSON', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'fromJSON', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
 			// OTHERS
 			// OTHERS
 			QUnit.test( 'Simple curve', ( assert ) => {
 			QUnit.test( 'Simple curve', ( assert ) => {
 
 

+ 49 - 4
test/unit/src/extras/curves/SplineCurve.tests.js

@@ -1,6 +1,8 @@
 /* global QUnit */
 /* global QUnit */
 
 
 import { SplineCurve } from '../../../../../src/extras/curves/SplineCurve.js';
 import { SplineCurve } from '../../../../../src/extras/curves/SplineCurve.js';
+
+import { Curve } from '../../../../../src/extras/core/Curve.js';
 import { Vector2 } from '../../../../../src/math/Vector2.js';
 import { Vector2 } from '../../../../../src/math/Vector2.js';
 
 
 export default QUnit.module( 'Extras', () => {
 export default QUnit.module( 'Extras', () => {
@@ -23,9 +25,13 @@ export default QUnit.module( 'Extras', () => {
 			} );
 			} );
 
 
 			// INHERITANCE
 			// INHERITANCE
-			QUnit.todo( 'Extending', ( assert ) => {
+			QUnit.test( 'Extending', ( assert ) => {
 
 
-				assert.ok( false, 'everything\'s gonna be alright' );
+				const object = new SplineCurve();
+				assert.strictEqual(
+					object instanceof Curve, true,
+					'SplineCurve extends from Curve'
+				);
 
 
 			} );
 			} );
 
 
@@ -36,19 +42,58 @@ export default QUnit.module( 'Extras', () => {
 
 
 			} );
 			} );
 
 
-			// PUBLIC STUFF
-			QUnit.todo( 'isSplineCurve', ( assert ) => {
+			// PROPERTIES
+			QUnit.test( 'type', ( assert ) => {
+
+				const object = new SplineCurve();
+				assert.ok(
+					object.type === 'SplineCurve',
+					'SplineCurve.type should be SplineCurve'
+				);
+
+			} );
+
+			QUnit.todo( 'points', ( assert ) => {
 
 
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
 
 
 			} );
 			} );
 
 
+			// PUBLIC
+			QUnit.test( 'isSplineCurve', ( assert ) => {
+
+				const object = new SplineCurve();
+				assert.ok(
+					object.isSplineCurve,
+					'SplineCurve.isSplineCurve should be true'
+				);
+
+			} );
+
 			QUnit.todo( 'getPoint', ( assert ) => {
 			QUnit.todo( 'getPoint', ( assert ) => {
 
 
 				assert.ok( false, 'everything\'s gonna be alright' );
 				assert.ok( false, 'everything\'s gonna be alright' );
 
 
 			} );
 			} );
 
 
+			QUnit.todo( 'copy', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'toJSON', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
+			QUnit.todo( 'fromJSON', ( assert ) => {
+
+				assert.ok( false, 'everything\'s gonna be alright' );
+
+			} );
+
 			// OTHERS
 			// OTHERS
 			QUnit.test( 'Simple curve', ( assert ) => {
 			QUnit.test( 'Simple curve', ( assert ) => {
 
 

+ 3 - 0
test/unit/three.source.unit.js

@@ -60,6 +60,9 @@ import './src/core/Uniform.tests.js';
 
 
 //src/extras
 //src/extras
 import './src/extras/DataUtils.tests.js';
 import './src/extras/DataUtils.tests.js';
+import './src/extras/Earcut.tests.js';
+import './src/extras/ImageUtils.tests.js';
+import './src/extras/PMREMGenerator.tests.js';
 import './src/extras/ShapeUtils.tests.js';
 import './src/extras/ShapeUtils.tests.js';
 
 
 //src/extras/core
 //src/extras/core