// 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.

import "package:expect/expect.dart";
import 'dart:math';

main() {
  Duration d, d1;

  d1 = new Duration(microseconds: pow(2, 53) as int);
  d = d1 * 2;
  Expect.equals(pow(2, 54), d.inMicroseconds);
  d = d1 * 1.5;
  Expect.equals(pow(2, 53).toDouble() * 1.5, d.inMicroseconds);
  Expect.isTrue(d.inMicroseconds is int);

  // Test that we lose precision when multiplying with a double.
  d = new Duration(microseconds: (pow(2, 53) as int) + 1) * 1.0;
  Expect.equals(0, d.inMicroseconds % 2);
}
