// https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#the-formdataevent-interface

test(() => {
  let fd = new FormData();
  assert_throws_js(TypeError, () => { FormDataEvent('', {formData:fd}) }, "Calling FormDataEvent constructor without 'new' must throw");
  assert_throws_js(TypeError, () => { new FormDataEvent() }, '0 arguments');
  assert_throws_js(TypeError, () => { new FormDataEvent('foo') }, '1 argument');
  assert_throws_js(TypeError, () => { new FormDataEvent(fd, fd) }, '2 invalid arguments');
  assert_throws_js(TypeError, () => { new FormDataEvent('foo', null) }, 'Null dictionary');
  assert_throws_js(TypeError, () => { new FormDataEvent('foo', undefined) }, 'Undefined dictionary');
  assert_throws_js(TypeError, () => { new FormDataEvent('foo', { formData: null }) }, 'Null formData');
  assert_throws_js(TypeError, () => { new FormDataEvent('foo', { formData: undefined }) }, 'Undefined formData');
  assert_throws_js(TypeError, () => { new FormDataEvent('foo', { formData: 'bar' }) }, 'Wrong type of formData');
}, 'Failing FormDataEvent constructor');

test(() => {
  let fd = new FormData();
  let event = new FormDataEvent('bar', { formData: fd, bubbles: true });
  assert_equals(event.formData, fd);
  assert_true(event.bubbles);
}, 'Successful FormDataEvent constructor');
