| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| library wheel_event_test; | |
| import 'dart:async'; | |
| import 'dart:html'; | |
| import 'package:expect/legacy/minitest.dart'; // ignore: deprecated_member_use_from_same_package | |
| Future testWheelEvent() async { | |
| final done = new Completer(); | |
| var element = new DivElement(); | |
| var eventType = Element.mouseWheelEvent.getEventType(element); | |
| element.onMouseWheel.listen((e) { | |
| try { | |
| expect(e.screen.x, 100); | |
| expect(e.deltaX, 0); | |
| expect(e.deltaY.toDouble(), 240.0); | |
| expect(e.deltaMode, WheelEvent.DOM_DELTA_PAGE); | |
| done.complete(); | |
| } catch (e) { | |
| done.completeError(e); | |
| } | |
| }); | |
| var event = new WheelEvent( | |
| eventType, | |
| deltaX: 0, | |
| deltaY: 240, | |
| deltaMode: WheelEvent.DOM_DELTA_PAGE, | |
| screenX: 100, | |
| ); | |
| element.dispatchEvent(event); | |
| await done.future; | |
| } | |
| Future testWheelEventWithDeltaZ() async { | |
| final done = new Completer(); | |
| var element = new DivElement(); | |
| var eventType = Element.mouseWheelEvent.getEventType(element); | |
| element.onMouseWheel.listen((e) { | |
| try { | |
| expect(e.deltaX, 0); | |
| expect(e.deltaY, 0); | |
| expect(e.screen.x, 0); | |
| expect(e.deltaZ!.toDouble(), 1.0); | |
| done.complete(); | |
| } catch (e) { | |
| done.completeError(e); | |
| } | |
| }); | |
| var event = new WheelEvent(eventType, deltaZ: 1.0); | |
| element.dispatchEvent(event); | |
| await done.future; | |
| } | |
| Future testWheelEventStream() async { | |
| final done = new Completer(); | |
| var element = new DivElement(); | |
| var eventType = Element.mouseWheelEvent.getEventType(element); | |
| element.onMouseWheel.listen((e) { | |
| try { | |
| expect(e.screen.x, 100); | |
| expect(e.deltaX.toDouble(), 240.0); | |
| expect(e.deltaY, 0); | |
| done.complete(); | |
| } catch (e) { | |
| done.completeError(e); | |
| } | |
| }); | |
| var event = new WheelEvent(eventType, deltaX: 240, deltaY: 0, screenX: 100); | |
| element.dispatchEvent(event); | |
| await done.future; | |
| } | |
| main() async { | |
| await testWheelEvent(); | |
| await testWheelEventWithDeltaZ(); | |
| await testWheelEventStream(); | |
| } |