<!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>
