// Copyright (C) 2020 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
description: Temporal.Instant.prototype.subtract throws a RangeError if any value in a property bag is -Infinity
esid: sec-temporal.instant.prototype.subtract
features: [Temporal]
---*/

const fields = ["hours", "minutes", "seconds", "milliseconds", "microseconds", "nanoseconds"];

const instance = Temporal.Instant.fromEpochSeconds(10);

fields.forEach((field) => {
  assert.throws(RangeError, () => instance.subtract({ [field]: -Infinity }));
});

let calls = 0;
const obj = {
  valueOf() {
    calls++;
    return -Infinity;
  }
};

fields.forEach((field) => {
  calls = 0;
  assert.throws(RangeError, () => instance.subtract({ [field]: obj }));
  assert.sameValue(calls, 1, "it fails after fetching the primitive value");
});
