| function eventEquals(e, expected) { |
| for (const prop of Object.keys(expected)) { |
| switch (prop) { |
| case "screenX": |
| case "screenY": |
| case "clientX": |
| case "clientY": |
| case "offsetX": |
| case "offsetY": |
| case "pageX": |
| case "pageY": |
| assert_true( |
| e[prop] >= expected[prop] - 0.5 && |
| e[prop] <= expected[prop] + 0.5, |
| `Event ${e.type} pointerId ${e.pointerId} property ${prop}, expected: ${ |
| expected[prop] |
| } ± 0.5, but got: ${e[prop]}` |
| ); |
| break; |
| default: |
| assert_equals(e[prop], expected[prop], `Event ${e.type} pointerId ${e.pointerId} property ${prop}`); |
| break; |
| } |
| } |
| } |
| |
| function addPointerEventListeners(test, target, events) { |
| for (const event of ["pointerup", "pointerdown", "pointermove"]) { |
| target.addEventListener(event, test.step_func(e => events.push(e))); |
| } |
| } |