// Copyright (c) 2014, 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.

/// @assertion Future<num> get animationFrame
/// Returns a Future that completes just before the window is about to repaint
/// so the user can draw an animation frame.
/// The Future completes to a timestamp that represents a floating point value
/// of the number of milliseconds that have elapsed since the page started to load
/// (which is also the timestamp at this call to animationFrame).
/// @description Checks that the Future completes with a floating point value

import "dart:html";
import "dart:async";
import "../../../Utils/expect.dart";

main() {
  Window nw = document.window as Window;
  Future<num> animationFrame = nw.animationFrame;
  asyncStart();
  animationFrame.then((num) {
    Expect.isTrue(num is double);
    asyncEnd();
    nw.close();
  });
}
