// Copyright (c) 2011, 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 Duration operator -(Duration other)
/// Returns the difference of this Duration and other as a new Duration.
/// @description Checks that duration calculation is correct
/// @author kaigorodov

import "../../../Utils/expect.dart";

void check(int d1, int h1, int m1, int s1, int ms1, int d2, int h2, int m2,
    int s2, int ms2) {
  Expect.equals(
      (d1 - d2) * 24 * 3600000 +
          (h1 - h2) * 3600000 +
          (m1 - m2) * 60000 +
          (s1 - s2) * 1000 +
          ms1 -
          ms2,
      (new Duration(
                  days: d1,
                  hours: h1,
                  minutes: m1,
                  seconds: s1,
                  milliseconds: ms1) -
              new Duration(
                  days: d2,
                  hours: h2,
                  minutes: m2,
                  seconds: s2,
                  milliseconds: ms2))
          .inMilliseconds);
}

int seed = 1234567;
int nextRand() {
  seed = 0x3fffffff & ((seed >> 17) + seed * 199933  + 11);
  return (seed >> 5) & 127;
}

main() {
  for (int k = 0; k < 100; k++) {
    check(nextRand(), nextRand(), nextRand(), nextRand(), nextRand(),
        nextRand(), nextRand(), nextRand(), nextRand(), nextRand());
  }
}
