summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/speech-api/SpeechSynthesisErrorEvent-constructor.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/speech-api/SpeechSynthesisErrorEvent-constructor.html')
-rw-r--r--testing/web-platform/tests/speech-api/SpeechSynthesisErrorEvent-constructor.html88
1 files changed, 88 insertions, 0 deletions
diff --git a/testing/web-platform/tests/speech-api/SpeechSynthesisErrorEvent-constructor.html b/testing/web-platform/tests/speech-api/SpeechSynthesisErrorEvent-constructor.html
new file mode 100644
index 0000000000..abefbf9a51
--- /dev/null
+++ b/testing/web-platform/tests/speech-api/SpeechSynthesisErrorEvent-constructor.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+/*
+[Exposed=Window,
+ Constructor(DOMString type, SpeechSynthesisErrorEventInit eventInitDict)]
+interface SpeechSynthesisErrorEvent : SpeechSynthesisErrorEvent {
+ readonly attribute SpeechSynthesisErrorCode error;
+};
+*/
+test(() => {
+ assert_throws_js(TypeError, () => {
+ new SpeechSynthesisErrorEvent();
+ });
+}, "SpeechSynthesisErrorEvent with no arguments throws TypeError");
+
+test(() => {
+ assert_throws_js(TypeError, () => {
+ new SpeechSynthesisErrorEvent("type");
+ });
+}, "SpeechSynthesisErrorEvent with no eventInitDict throws TypeError");
+
+test(() => {
+ assert_throws_js(TypeError, () => {
+ new SpeechSynthesisErrorEvent("type", {});
+ });
+}, `SpeechSynthesisErrorEvent with empty eventInitDict throws TypeError (requires
+ utterance and error)`);
+
+test(() => {
+ assert_throws_js(TypeError, () => {
+ new SpeechSynthesisErrorEvent("type", {error:"not-allowed"});
+ });
+}, `SpeechSynthesisErrorEvent with eventInitDict without utterance throws
+ TypeError`);
+
+test(() => {
+ assert_throws_js(TypeError, () => {
+ new SpeechSynthesisErrorEvent("type", {utterance: new SpeechSynthesisUtterance()});
+ });
+}, `SpeechSynthesisErrorEvent with eventInitDict without error throws
+ TypeError`);
+
+test(() => {
+ const utterance = new SpeechSynthesisUtterance("foo");
+ const event = new SpeechSynthesisErrorEvent("type", {utterance: utterance, error:"not-allowed"});
+ assert_equals(event.utterance, utterance);
+ assert_equals(event.error, "not-allowed");
+ assert_equals(event.charIndex, 0);
+ assert_equals(event.elapsedTime, 0);
+ assert_equals(event.name, "");
+}, "SpeechSynthesisErrorEvent with eventInitDict having utterance and error");
+
+test(() => {
+ const utterance = new SpeechSynthesisUtterance("foo");
+ const event = new SpeechSynthesisErrorEvent("type", {
+ utterance: utterance,
+ charIndex: 5,
+ elapsedTime: 100,
+ name: "foo",
+ error: "synthesis-failed"
+ });
+ assert_equals(event.bubbles, false);
+ assert_equals(event.cancelable, false);
+ assert_equals(event.type, "type");
+ assert_equals(event.utterance, utterance);
+ assert_equals(event.charIndex, 5);
+ assert_equals(event.elapsedTime, 100);
+ assert_equals(event.name, "foo");
+ assert_equals(event.error, "synthesis-failed");
+}, "SpeechSynthesisErrorEvent with custom eventInitDict");
+
+test(() => {
+ function createEventFunc(error) {
+ return () => {
+ new SpeechSynthesisErrorEvent("type", {
+ utterance: new SpeechSynthesisUtterance(),
+ error: error
+ });
+ };
+ };
+ assert_throws_js(TypeError, createEventFunc(""));
+ assert_throws_js(TypeError, createEventFunc("foo"));
+ assert_throws_js(TypeError, createEventFunc("bar"));
+}, "SpeechSynthesisErrorEvent with wrong error enum");
+</script>