summaryrefslogtreecommitdiff
path: root/deps/v8/test/intl/bigint/tolocalestring.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/intl/bigint/tolocalestring.js')
-rw-r--r--deps/v8/test/intl/bigint/tolocalestring.js61
1 files changed, 61 insertions, 0 deletions
diff --git a/deps/v8/test/intl/bigint/tolocalestring.js b/deps/v8/test/intl/bigint/tolocalestring.js
new file mode 100644
index 0000000000..d0b6792ea8
--- /dev/null
+++ b/deps/v8/test/intl/bigint/tolocalestring.js
@@ -0,0 +1,61 @@
+// Copyright 2019 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Flags: --harmony-intl-bigint
+
+var locales = [
+ "en", // "1,234,567,890,123,456"
+ "de", // "1.234.567.890.123.456"
+ "fr", // "1 234 567 890 123 456"
+ "hi", // "1,23,45,67,89,01,23,456"
+ "fa", // "۱٬۲۳۴٬۵۶۷٬۸۹۰٬۱۲۳٬۴۵۶"
+ "th-u-nu-thai", // "๑,๒๓๔,๕๖๗,๘๙๐,๑๒๓,๔๕๖"
+];
+
+var data = [
+ Number.MAX_SAFE_INTEGER,
+ -Number.MAX_SAFE_INTEGER,
+ Math.floor(Number.MAX_SAFE_INTEGER / 2),
+ 0,
+ /// -0, // this case is broken now.
+];
+
+for (var locale of locales) {
+ let nf = new Intl.NumberFormat(locale);
+
+ let percentOption = {style: "percent"};
+ let nfPercent = new Intl.NumberFormat(locale, percentOption);
+ for (var n of data) {
+ let bigint = BigInt(n);
+ // Test NumberFormat w/ number output the same as
+ // BigInt.prototype.toLocaleString()
+ assertEquals(nf.format(n), bigint.toLocaleString(locale));
+
+ // Test NumberFormat output the same regardless pass in as number or BigInt
+ assertEquals(nf.format(n), nf.format(bigint));
+
+ // Test formatToParts
+ assertEquals(nf.formatToParts(n), nf.formatToParts(bigint));
+
+ // Test output with option
+ // Test NumberFormat w/ number output the same as
+ // BigInt.prototype.toLocaleString()
+ assertEquals(nfPercent.format(n),
+ bigint.toLocaleString(locale, percentOption));
+
+ // Test NumberFormat output the same regardless pass in as number or BigInt
+ assertEquals(nfPercent.format(n), nfPercent.format(bigint));
+ assertEquals(nfPercent.formatToParts(n), nfPercent.formatToParts(bigint));
+ }
+
+ // Test very big BigInt
+ let veryBigInt = BigInt(Number.MAX_SAFE_INTEGER) *
+ BigInt(Number.MAX_SAFE_INTEGER) *
+ BigInt(Number.MAX_SAFE_INTEGER);
+ assertEquals(nf.format(veryBigInt), veryBigInt.toLocaleString(locale));
+ // It should output different than toString
+ assertFalse(veryBigInt.toLocaleString(locale) == veryBigInt.toString());
+ assertTrue(veryBigInt.toLocaleString(locale).length >
+ veryBigInt.toString().length);
+}