summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/webaudio/resources/start-stop-exceptions.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/webaudio/resources/start-stop-exceptions.js')
-rw-r--r--testing/web-platform/tests/webaudio/resources/start-stop-exceptions.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webaudio/resources/start-stop-exceptions.js b/testing/web-platform/tests/webaudio/resources/start-stop-exceptions.js
new file mode 100644
index 0000000000..0d2ea12f6d
--- /dev/null
+++ b/testing/web-platform/tests/webaudio/resources/start-stop-exceptions.js
@@ -0,0 +1,45 @@
+// Test that exceptions are throw for invalid values for start and
+// stop.
+function testStartStop(should, node, options) {
+ // Test non-finite values for start. These should all throw a TypeError
+ const nonFiniteValues = [NaN, Infinity, -Infinity];
+
+ nonFiniteValues.forEach(time => {
+ should(() => {
+ node.start(time);
+ }, `start(${time})`)
+ .throw(TypeError);
+ });
+
+ should(() => {
+ node.stop();
+ }, 'Calling stop() before start()').throw(DOMException, 'InvalidStateError');
+
+ should(() => {
+ node.start(-1);
+ }, 'start(-1)').throw(RangeError);
+
+ if (options) {
+ options.forEach(test => {
+ should(() => {node.start(...test.args)},
+ 'start(' + test.args + ')').throw(test.errorType);
+ });
+ }
+
+ node.start();
+ should(() => {
+ node.start();
+ }, 'Calling start() twice').throw(DOMException, 'InvalidStateError');
+ should(() => {
+ node.stop(-1);
+ }, 'stop(-1)').throw(RangeError);
+
+ // Test non-finite stop times
+ nonFiniteValues.forEach(time => {
+ should(() => {
+ node.stop(time);
+ }, `stop(${time})`)
+ .throw(TypeError);
+ });
+}
+