// Copyright (c) 2012, 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 RequestAnimationFrameTest; import '../../pkg/unittest/lib/unittest.dart'; import '../../pkg/unittest/lib/html_config.dart'; import 'dart:html'; main() { useHtmlConfiguration(); test('oneShot', () { var frame = window.requestAnimationFrame( expectAsync1((timestamp) { })); }); test('twoShot', () { var frame = window.requestAnimationFrame( expectAsync1((timestamp1) { window.requestAnimationFrame( expectAsync1((timestamp2) { // Not monotonic on Safari and IE. // expect(timestamp2, greaterThan(timestamp1), // reason: 'timestamps ordered'); })); })); }); // How do we test that a callback is never called? We can't wrap the uncalled // callback with 'expectAsync1'. Will request several frames and try // cancelling the one that is not the last. test('cancel1', () { var frame1 = window.requestAnimationFrame( (timestamp1) { throw new Exception('Should have been cancelled'); }); var frame2 = window.requestAnimationFrame( expectAsync1((timestamp2) { })); window.cancelAnimationFrame(frame1); }); test('cancel2', () { var frame1 = window.requestAnimationFrame( expectAsync1((timestamp1) { })); var frame2 = window.requestAnimationFrame( (timestamp2) { throw new Exception('Should have been cancelled'); }); var frame3 = window.requestAnimationFrame( expectAsync1((timestamp3) { })); window.cancelAnimationFrame(frame2); }); }