diff options
Diffstat (limited to 'testing/web-platform/tests/captured-mouse-events/captured-mouse-event-constructor.html')
-rw-r--r-- | testing/web-platform/tests/captured-mouse-events/captured-mouse-event-constructor.html | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/testing/web-platform/tests/captured-mouse-events/captured-mouse-event-constructor.html b/testing/web-platform/tests/captured-mouse-events/captured-mouse-event-constructor.html new file mode 100644 index 0000000000..e9cfe971c0 --- /dev/null +++ b/testing/web-platform/tests/captured-mouse-events/captured-mouse-event-constructor.html @@ -0,0 +1,68 @@ +<!doctype html> +<meta charset=utf-8> +<link rel='help' href='https://screen-share.github.io/captured-mouse-events/#captured-mouse-change-event'> +<link rel='help' href='https://screen-share.github.io/captured-mouse-events/#captured-mouse-change-event-init'> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> + // See https://webidl.spec.whatwg.org/#idl-long + const maxLongValue = 2147483647; + + test(() => { + assert_throws_js(TypeError, () => new CapturedMouseEvent()); + }, "type argument is mandatory"); + + test(() => { + [ + {surfaceX: -5, surfaceY: -5}, /* X, Y negative */ + {surfaceX: -5, surfaceY: +5}, /* X negative, Y non-negative */ + {surfaceX: +5, surfaceY: -5}, /* X non-negative, Y negative */ + {surfaceX: -1, surfaceY: +5}, /* X equal to -1, Y non-negative */ + {/* surfaceX: -1, */ surfaceY: +5}, /* Same with implicit surfaceX */ + {surfaceX: +5, surfaceY: -1}, /* X non-negative, Y equal to -1 */ + {surfaceX: +5 /*, surfaceY: -1 */}, /* Same with implicit surfaceY */ + {surfaceX: maxLongValue+1, surfaceY: +5}, /* 'long' overflow for X */ + {surfaceX: +5, surfaceY: maxLongValue+1}, /* 'long' overflow for Y */ + ].forEach(init => { + assert_throws_js(RangeError, () => new CapturedMouseEvent("", init), + `eventInitDict=${JSON.stringify(init)}`); + }); + }, "Invalid surfaceX/surfaceY options cause a RangeError to be thrown"); + + test(() => { + [ + {surfaceX: +5, surfaceY: +7}, /* Two positive values */ + {surfaceX: -1, surfaceY: -1}, /* Valid case with negative values */ + {surfaceX: 0, surfaceY: 0}, /* Minimal non-negative values */ + {surfaceX: 0, surfaceY: 5}, /* Minimal non-negative X and positive Y */ + {surfaceX: 5, surfaceY: 0}, /* Positive X and minimal non-negative Y */ + {surfaceX: maxLongValue, surfaceY: maxLongValue}, /* Maximal values */ + ].forEach(init => { + let event = new CapturedMouseEvent("", init); + assert_equals(event.surfaceX, init.surfaceX, + `surfaceX with eventInitDict=${JSON.stringify(init)}`); + assert_equals(event.surfaceY, init.surfaceY, + `surfaceY with eventInitDict=${JSON.stringify(init)}`); + }); + }, "Valid surfaceX/surfaceY options are used as initial values"); + + test(() => { + let event = new CapturedMouseEvent(""); + assert_equals(event.surfaceX, -1, + `surfaceX with implicit eventInitDict={}`); + assert_equals(event.surfaceY, -1, + `surfaceY with implicit eventInitDict={}`); + + [ + {}, + {surfaceX: -1}, + {surfaceY: -1}, + ].forEach(init => { + let event = new CapturedMouseEvent("", init); + assert_equals(event.surfaceX, -1, + `surfaceX with eventInitDict=${JSON.stringify(init)}`); + assert_equals(event.surfaceY, -1, + `surfaceY with eventInitDict=${JSON.stringify(init)}`); + }); + }, "surfaceX/surfaceY default to -1"); +</script> |