mirror of https://github.com/tc39/test262.git
82 lines
3.1 KiB
JavaScript
82 lines
3.1 KiB
JavaScript
|
// Copyright 2012 Mozilla Corporation. All rights reserved.
|
||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||
|
|
||
|
/*---
|
||
|
es5id: 11.1.1_17
|
||
|
description: Tests that the option currency is processed correctly.
|
||
|
author: Norbert Lindenberg
|
||
|
---*/
|
||
|
|
||
|
var validValues = ["CNY", "USD", "EUR", "IDR", "jpy", {toString: function () {return "INR";}}];
|
||
|
var invalidValues = ["$", "SFr.", "US$", "ßP", {toString: function () {return;}}];
|
||
|
|
||
|
var defaultLocale = new Intl.NumberFormat().resolvedOptions().locale;
|
||
|
|
||
|
validValues.forEach(function (value) {
|
||
|
var format, actual, expected;
|
||
|
|
||
|
// with currency style, we should get the upper case form back
|
||
|
format = new Intl.NumberFormat([defaultLocale], {style: "currency", currency: value});
|
||
|
actual = format.resolvedOptions().currency;
|
||
|
expected = value.toString().toUpperCase();
|
||
|
if (actual !== expected) {
|
||
|
$ERROR("Incorrect resolved currency with currency style - expected " +
|
||
|
expected + "; got " + actual + ".");
|
||
|
}
|
||
|
|
||
|
// without currency style, we shouldn't get any currency back
|
||
|
format = new Intl.NumberFormat([defaultLocale], {currency: value});
|
||
|
actual = format.resolvedOptions().currency;
|
||
|
expected = undefined;
|
||
|
if (actual !== expected) {
|
||
|
$ERROR("Incorrect resolved currency with non-currency style - expected " +
|
||
|
expected + "; got " + actual + ".");
|
||
|
}
|
||
|
|
||
|
// currencies specified through the locale must be ignored
|
||
|
format = new Intl.NumberFormat([defaultLocale + "-u-cu-krw"], {style: "currency", currency: value});
|
||
|
actual = format.resolvedOptions().currency;
|
||
|
expected = value.toString().toUpperCase();
|
||
|
if (actual !== expected) {
|
||
|
$ERROR("Incorrect resolved currency with -u-cu- and currency style - expected " +
|
||
|
expected + "; got " + actual + ".");
|
||
|
}
|
||
|
|
||
|
format = new Intl.NumberFormat([defaultLocale + "-u-cu-krw"], {currency: value});
|
||
|
actual = format.resolvedOptions().currency;
|
||
|
expected = undefined;
|
||
|
if (actual !== expected) {
|
||
|
$ERROR("Incorrect resolved currency with -u-cu- and non-currency style - expected " +
|
||
|
expected + "; got " + actual + ".");
|
||
|
}
|
||
|
});
|
||
|
|
||
|
invalidValues.forEach(function (value) {
|
||
|
function expectError(f) {
|
||
|
var error;
|
||
|
try {
|
||
|
f();
|
||
|
} catch (e) {
|
||
|
error = e;
|
||
|
}
|
||
|
if (error === undefined) {
|
||
|
$ERROR("Invalid currency value " + value + " was not rejected.");
|
||
|
} else if (error.name !== "RangeError") {
|
||
|
$ERROR("Invalid currency value " + value + " was rejected with wrong error " + error.name + ".");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
expectError(function () {
|
||
|
return new Intl.NumberFormat([defaultLocale], {style: "currency", currency: value});
|
||
|
});
|
||
|
expectError(function () {
|
||
|
return new Intl.NumberFormat([defaultLocale], {currency: value});
|
||
|
});
|
||
|
expectError(function () {
|
||
|
return new Intl.NumberFormat([defaultLocale + "-u-cu-krw"], {style: "currency", currency: value});
|
||
|
});
|
||
|
expectError(function () {
|
||
|
return new Intl.NumberFormat([defaultLocale + "-u-cu-krw"], {currency: value});
|
||
|
});
|
||
|
});
|