Add tests for some NumberFormat options edge cases

Closes #888

These tests are regression tests for V8 failures at top of tree,
https://bugs.chromium.org/p/v8/issues/detail?id=6015
https://bugs.chromium.org/p/v8/issues/detail?id=6016

Neither issue is present in JSC or SpiderMonkey. They are fixed
by the V8 patch
https://codereview.chromium.org/2717613005
This commit is contained in:
Daniel Ehrenberg 2017-03-06 15:19:40 +01:00 committed by Leonardo Balter
parent 333fa10c63
commit a9d9ab1a51
No known key found for this signature in database
GPG Key ID: 4191D7EB5EC82FF7
2 changed files with 39 additions and 0 deletions

View File

@ -0,0 +1,21 @@
// Copyright 2017 the V8 project authors. All rights reserved.
// This code is governed by the license found in the LICENSE file.
/*---
esid: sec-setnfdigitoptions
description: >
When a currency is used in Intl.NumberFormat and minimumFractionDigits is
not provided, maximumFractionDigits should be range-checked against it.
---*/
assert.throws(RangeError, () => new Intl.NumberFormat('en', {
style: 'currency',
currency: 'USD',
maximumFractionDigits: 1
}), 'CurrencyDigits(USD) == 1');
assert.throws(RangeError, () => new Intl.NumberFormat('en', {
style: 'currency',
currency: 'CLF',
maximumFractionDigits: 4
}), 'CurrencyDigits(CLF) == 4');

View File

@ -0,0 +1,18 @@
// Copyright 2017 the V8 project authors. All rights reserved.
// This code is governed by the license found in the LICENSE file.
/*---
esid: sec-setnfdigitoptions
description: >
The maximum and minimum fraction digits properties should be read from
the options bag exactly once from the NumberFormat constructor.
info: Regression test for https://bugs.chromium.org/p/v8/issues/detail?id=6015
---*/
var calls = [];
new Intl.NumberFormat("en", { get minimumFractionDigits() { calls.push('minimumFractionDigits') },
get maximumFractionDigits() { calls.push('maximumFractionDigits') } });
assert.sameValue(calls.length, 2);
assert.sameValue(calls[0], 'minimumFractionDigits');
assert.sameValue(calls[1], 'maximumFractionDigits');