Browse Source

Tests: Unit Tests for Audio (#25406)

* Update Audio.tests.js

Mock listener.
Audio extends from Object3D
Audio.type should be Audio
Stub missing member tests.

* Update AudioAnalyser.tests.js

Stub missing member tests.

* Update AudioContext.tests.js

AudioContext.getContext creates a context.
AudioContext.setContext updates the context.

* Update AudioListener.tests.js

AudioListener extends from Object3D
AudioListener.type should be AudioListener
Stub missing member tests.

* Update PositionalAudio.tests.js

PositionalAudio extends from Audio.
Stub missing member tests.
Ed Preston 2 years ago
parent
commit
98c6b66ef8

+ 178 - 4
test/unit/src/audio/Audio.tests.js

@@ -1,15 +1,39 @@
 /* global QUnit */
 /* global QUnit */
 
 
-// import { Audio } from '../../../../src/audio/Audio.js';
+import { Audio } from '../../../../src/audio/Audio.js';
+
+import { Object3D } from '../../../../src/core/Object3D.js';
 
 
 export default QUnit.module( 'Audios', () => {
 export default QUnit.module( 'Audios', () => {
 
 
 	QUnit.module( 'Audio', () => {
 	QUnit.module( 'Audio', () => {
 
 
+		function mockListener() {
+
+			return {
+				context: {
+					createGain: () => {
+
+						return {
+							connect: () => {},
+						};
+
+					}
+				},
+				getInput: () => {},
+			};
+
+		}
+
 		// INHERITANCE
 		// INHERITANCE
-		QUnit.todo( 'Extending', ( assert ) => {
+		QUnit.test( 'Extending', ( assert ) => {
 
 
-			assert.ok( false, 'everything\'s gonna be alright' );
+			const listener = mockListener();
+			const object = new Audio( listener );
+			assert.strictEqual(
+				object instanceof Object3D, true,
+				'Audio extends from Object3D'
+			);
 
 
 		} );
 		} );
 
 
@@ -20,7 +44,121 @@ export default QUnit.module( 'Audios', () => {
 
 
 		} );
 		} );
 
 
-		// PUBLIC STUFF
+		// PROPERTIES
+		QUnit.test( 'type', ( assert ) => {
+
+			const listener = mockListener();
+			const object = new Audio( listener );
+			assert.ok(
+				object.type === 'Audio',
+				'Audio.type should be Audio'
+			);
+
+		} );
+
+		QUnit.todo( 'listener', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'context', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'gain', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'autoplay', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'buffer', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'detune', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'loop', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'loopStart', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'loopEnd', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'offset', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'duration', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'playbackRate', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'isPlaying', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'hasPlaybackControl', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'source', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'sourceType', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'filters', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		// PUBLIC
 		QUnit.todo( 'getOutput', ( assert ) => {
 		QUnit.todo( 'getOutput', ( assert ) => {
 
 
 			assert.ok( false, 'everything\'s gonna be alright' );
 			assert.ok( false, 'everything\'s gonna be alright' );
@@ -33,6 +171,18 @@ export default QUnit.module( 'Audios', () => {
 
 
 		} );
 		} );
 
 
+		QUnit.todo( 'setMediaElementSource', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'setMediaStreamSource', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
 		QUnit.todo( 'setBuffer', ( assert ) => {
 		QUnit.todo( 'setBuffer', ( assert ) => {
 
 
 			assert.ok( false, 'everything\'s gonna be alright' );
 			assert.ok( false, 'everything\'s gonna be alright' );
@@ -81,6 +231,18 @@ export default QUnit.module( 'Audios', () => {
 
 
 		} );
 		} );
 
 
+		QUnit.todo( 'setDetune', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'getDetune', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
 		QUnit.todo( 'getFilter', ( assert ) => {
 		QUnit.todo( 'getFilter', ( assert ) => {
 
 
 			assert.ok( false, 'everything\'s gonna be alright' );
 			assert.ok( false, 'everything\'s gonna be alright' );
@@ -123,6 +285,18 @@ export default QUnit.module( 'Audios', () => {
 
 
 		} );
 		} );
 
 
+		QUnit.todo( 'setLoopStart', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'setLoopEnd', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
 		QUnit.todo( 'getVolume', ( assert ) => {
 		QUnit.todo( 'getVolume', ( assert ) => {
 
 
 			assert.ok( false, 'everything\'s gonna be alright' );
 			assert.ok( false, 'everything\'s gonna be alright' );

+ 14 - 1
test/unit/src/audio/AudioAnalyser.tests.js

@@ -13,7 +13,20 @@ export default QUnit.module( 'Audios', () => {
 
 
 		} );
 		} );
 
 
-		// PUBLIC STUFF
+		// PROPERTIES
+		QUnit.todo( 'analyser', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'data', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		// PUBLIC
 		QUnit.todo( 'getFrequencyData', ( assert ) => {
 		QUnit.todo( 'getFrequencyData', ( assert ) => {
 
 
 			assert.ok( false, 'everything\'s gonna be alright' );
 			assert.ok( false, 'everything\'s gonna be alright' );

+ 41 - 6
test/unit/src/audio/AudioContext.tests.js

@@ -1,21 +1,56 @@
 /* global QUnit */
 /* global QUnit */
 
 
-// import { AudioContext } from '../../../../src/audio/AudioContext.js';
+import { AudioContext } from '../../../../src/audio/AudioContext.js';
 
 
 export default QUnit.module( 'Audios', () => {
 export default QUnit.module( 'Audios', () => {
 
 
 	QUnit.module( 'AudioContext', () => {
 	QUnit.module( 'AudioContext', () => {
 
 
-		// PUBLIC STUFF
-		QUnit.todo( 'getContext', ( assert ) => {
+		function mockWindowAudioContext() {
 
 
-			assert.ok( false, 'everything\'s gonna be alright' );
+			if ( typeof window === 'undefined' ) {
+
+				global.window = {
+					AudioContext: function () {
+
+						return {
+							createGain: () => {
+
+								return {
+									connect: () => {},
+								};
+
+							}
+						};
+
+					},
+				};
+
+			}
+
+		}
+
+		// STATIC
+		QUnit.test( 'getContext', ( assert ) => {
+
+			mockWindowAudioContext();
+
+			const context = AudioContext.getContext();
+			assert.strictEqual(
+				context instanceof Object, true,
+				'AudioContext.getContext creates a context.'
+			);
 
 
 		} );
 		} );
 
 
-		QUnit.todo( 'setContext', ( assert ) => {
+		QUnit.test( 'setContext', ( assert ) => {
 
 
-			assert.ok( false, 'everything\'s gonna be alright' );
+			AudioContext.setContext( new window.AudioContext() );
+			const context = AudioContext.getContext();
+			assert.strictEqual(
+				context instanceof Object, true,
+				'AudioContext.setContext updates the context.'
+			);
 
 
 		} );
 		} );
 
 

+ 71 - 4
test/unit/src/audio/AudioListener.tests.js

@@ -1,15 +1,47 @@
 /* global QUnit */
 /* global QUnit */
 
 
-// import { AudioListener } from '../../../../src/audio/AudioListener.js';
+import { AudioListener } from '../../../../src/audio/AudioListener.js';
+
+import { Object3D } from '../../../../src/core/Object3D.js';
 
 
 export default QUnit.module( 'Audios', () => {
 export default QUnit.module( 'Audios', () => {
 
 
+	function mockWindowAudioContext() {
+
+		if ( typeof window === 'undefined' ) {
+
+			global.window = {
+				AudioContext: function () {
+
+					return {
+						createGain: () => {
+
+							return {
+								connect: () => {},
+							};
+
+						}
+					};
+
+				},
+			};
+
+		}
+
+	}
+
 	QUnit.module( 'AudioListener', () => {
 	QUnit.module( 'AudioListener', () => {
 
 
 		// INHERITANCE
 		// INHERITANCE
-		QUnit.todo( 'Extending', ( assert ) => {
+		QUnit.test( 'Extending', ( assert ) => {
 
 
-			assert.ok( false, 'everything\'s gonna be alright' );
+			mockWindowAudioContext();
+
+			const object = new AudioListener();
+			assert.strictEqual(
+				object instanceof Object3D, true,
+				'AudioListener extends from Object3D'
+			);
 
 
 		} );
 		} );
 
 
@@ -20,7 +52,42 @@ export default QUnit.module( 'Audios', () => {
 
 
 		} );
 		} );
 
 
-		// PUBLIC STUFF
+		// PROPERTIES
+		QUnit.test( 'type', ( assert ) => {
+
+			const object = new AudioListener();
+			assert.ok(
+				object.type === 'AudioListener',
+				'AudioListener.type should be AudioListener'
+			);
+
+		} );
+
+		QUnit.todo( 'context', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'gain', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'filter', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		QUnit.todo( 'timeDelta', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		// PUBLIC
 		QUnit.todo( 'getInput', ( assert ) => {
 		QUnit.todo( 'getInput', ( assert ) => {
 
 
 			assert.ok( false, 'everything\'s gonna be alright' );
 			assert.ok( false, 'everything\'s gonna be alright' );

+ 55 - 5
test/unit/src/audio/PositionalAudio.tests.js

@@ -1,15 +1,47 @@
 /* global QUnit */
 /* global QUnit */
 
 
-// import { PositionalAudio } from '../../../../src/audio/PositionalAudio.js';
+import { PositionalAudio } from '../../../../src/audio/PositionalAudio.js';
+
+import { Audio } from '../../../../src/audio/Audio.js';
 
 
 export default QUnit.module( 'Audios', () => {
 export default QUnit.module( 'Audios', () => {
 
 
 	QUnit.module( 'PositionalAudio', () => {
 	QUnit.module( 'PositionalAudio', () => {
 
 
+		function mock3DListener() {
+
+			return {
+				context: {
+					createGain: () => {
+
+						return {
+							connect: () => {},
+						};
+
+					},
+					createPanner: () => {
+
+						return {
+							connect: () => {},
+						};
+
+					}
+
+				},
+				getInput: () => {},
+			};
+
+		}
+
 		// INHERITANCE
 		// INHERITANCE
-		QUnit.todo( 'Extending', ( assert ) => {
+		QUnit.test( 'Extending', ( assert ) => {
 
 
-			assert.ok( false, 'everything\'s gonna be alright' );
+			const listener = mock3DListener();
+			const object = new PositionalAudio( listener );
+			assert.strictEqual(
+				object instanceof Audio, true,
+				'PositionalAudio extends from Audio'
+			);
 
 
 		} );
 		} );
 
 
@@ -20,7 +52,20 @@ export default QUnit.module( 'Audios', () => {
 
 
 		} );
 		} );
 
 
-		// PUBLIC STUFF
+		// PROPERTIES
+		QUnit.todo( 'panner', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
+		// PUBLIC
+		QUnit.todo( 'disconnect', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
+
 		QUnit.todo( 'getOutput', ( assert ) => {
 		QUnit.todo( 'getOutput', ( assert ) => {
 
 
 			assert.ok( false, 'everything\'s gonna be alright' );
 			assert.ok( false, 'everything\'s gonna be alright' );
@@ -75,12 +120,17 @@ export default QUnit.module( 'Audios', () => {
 
 
 		} );
 		} );
 
 
-		QUnit.todo( 'updateMatrixWorld', ( assert ) => {
+		QUnit.todo( 'setDirectionalCone', ( assert ) => {
 
 
 			assert.ok( false, 'everything\'s gonna be alright' );
 			assert.ok( false, 'everything\'s gonna be alright' );
 
 
 		} );
 		} );
 
 
+		QUnit.todo( 'updateMatrixWorld', ( assert ) => {
+
+			assert.ok( false, 'everything\'s gonna be alright' );
+
+		} );
 
 
 	} );
 	} );