// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-date.utc
description: Values specified to MakeTime exceed their time boundaries
info: |
  [...]
  9. Return TimeClip(MakeDate(MakeDay(yr, m, dt), MakeTime(h, min, s, milli))). 

  MakeTime (hour, min, sec, ms)

  1. If hour is not finite or min is not finite or sec is not finite or ms is
     not finite, return NaN.
  2. Let h be ToInteger(hour).
  3. Let m be ToInteger(min).
  4. Let s be ToInteger(sec).
  5. Let milli be ToInteger(ms).
  6. Let t be h * msPerHour + m * msPerMinute + s * msPerSecond + milli,
     performing the arithmetic according to IEEE 754-2008 rules (that is, as if
     using the ECMAScript operators * and +).
  7. Return t.
---*/

assert.sameValue(Date.UTC(2016, 6, 5, -1), 1467673200000, 'hour: -1');
assert.sameValue(Date.UTC(2016, 6, 5, 24), 1467763200000, 'hour: 24');
assert.sameValue(Date.UTC(2016, 6, 5, 0, -1), 1467676740000, 'minute: -1');
assert.sameValue(Date.UTC(2016, 6, 5, 0, 60), 1467680400000, 'minute: 60');
assert.sameValue(Date.UTC(2016, 6, 5, 0, 0, -1), 1467676799000, 'second: -1');
assert.sameValue(Date.UTC(2016, 6, 5, 0, 0, 60), 1467676860000, 'second: 60');
assert.sameValue(
  Date.UTC(2016, 6, 5, 0, 0, 0, -1), 1467676799999, 'millisecond: -1'
);
assert.sameValue(
  Date.UTC(2016, 6, 5, 0, 0, 0, 1000), 1467676801000, 'millisecond: 1000'
);

reportCompare(0, 0);
