// 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 'package:unittest/unittest.dart'; import 'package:unittest/html_config.dart'; import 'dart:html'; main() { useHtmlConfiguration(); test('oneShot', () { var frame = window.requestAnimationFrame(expectAsync((timestamp) {})); }); test('twoShot', () { var frame = window.requestAnimationFrame(expectAsync((timestamp1) { window.requestAnimationFrame(expectAsync((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 'expectAsync'. 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(expectAsync((timestamp2) {})); window.cancelAnimationFrame(frame1); }); test('cancel2', () { var frame1 = window.requestAnimationFrame(expectAsync((timestamp1) {})); var frame2 = window.requestAnimationFrame((timestamp2) { throw new Exception('Should have been cancelled'); }); var frame3 = window.requestAnimationFrame(expectAsync((timestamp3) {})); window.cancelAnimationFrame(frame2); }); }