<!DOCTYPE HTML>
<html>
 <head>
  <title>WebStorage Test: StorageEvent - initStorageEvent</title>
  <script src="/resources/testharness.js"></script>
  <script src="/resources/testharnessreport.js"></script>
 </head>
 <body>
    <script>
        test(() => {
            const event = new StorageEvent('storage');
            assert_throws(new TypeError, () => event.initStorageEvent());
            // should be redundant, but .length can be wrong with custom bindings
            assert_equals(event.initStorageEvent.length, 1, 'event.initStorageEvent.length');
        }, 'initStorageEvent with 0 arguments');

        test(() => {
            const event = new StorageEvent('storage');
            event.initStorageEvent('type');
            assert_equals(event.type, 'type', 'event.type');
            assert_equals(event.bubbles, false, 'event.bubbles');
            assert_equals(event.cancelable, false, 'event.cancelable');
            assert_equals(event.key, null, 'event.key');
            assert_equals(event.oldValue, null, 'event.oldValue');
            assert_equals(event.newValue, null, 'event.newValue');
            assert_equals(event.url, '', 'event.url');
            assert_equals(event.storageArea, null, 'event.storageArea');
        }, 'initStorageEvent with 1 argument');

        test(() => {
            assert_not_equals(localStorage, null, 'localStorage'); // precondition

            const event = new StorageEvent('storage');
            event.initStorageEvent('type', true, true, 'key', 'oldValue', 'newValue', 'url', localStorage);
            assert_equals(event.type, 'type', 'event.type');
            assert_equals(event.bubbles, true, 'event.bubbles');
            assert_equals(event.cancelable, true, 'event.cancelable');
            assert_equals(event.key, 'key', 'event.key');
            assert_equals(event.oldValue, 'oldValue', 'event.oldValue');
            assert_equals(event.newValue, 'newValue', 'event.newValue');
            assert_equals(event.url, 'url', 'event.url');
            assert_equals(event.storageArea, localStorage, 'event.storageArea');
        }, 'initStorageEvent with 8 sensible arguments');

        test(() => {
            const event = new StorageEvent('storage');
            event.initStorageEvent(null, null, null, null, null, null, null, null);
            assert_equals(event.type, 'null', 'event.type');
            assert_equals(event.bubbles, false, 'event.bubbles');
            assert_equals(event.cancelable, false, 'event.cancelable');
            assert_equals(event.key, null, 'event.key');
            assert_equals(event.oldValue, null, 'event.oldValue');
            assert_equals(event.newValue, null, 'event.newValue');
            assert_equals(event.url, 'null', 'event.url');
            assert_equals(event.storageArea, null, 'event.storageArea');
        }, 'initStorageEvent with 8 null arguments');

        test(() => {
            const event = new StorageEvent('storage');
            event.initStorageEvent(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined);
            assert_equals(event.type, 'undefined', 'event.type');
            assert_equals(event.bubbles, false, 'event.bubbles');
            assert_equals(event.cancelable, false, 'event.cancelable');
            assert_equals(event.key, null, 'event.key');
            assert_equals(event.oldValue, null, 'event.oldValue');
            assert_equals(event.newValue, null, 'event.newValue');
            assert_equals(event.url, '', 'event.url');
            assert_equals(event.storageArea, null, 'event.storageArea');
        }, 'initStorageEvent with 8 undefined arguments');
    </script>
 </body>
</html>
