summaryrefslogtreecommitdiffstats
path: root/intl/locale/tests/unit
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /intl/locale/tests/unit
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'intl/locale/tests/unit')
-rw-r--r--intl/locale/tests/unit/data/chrome.manifest1
-rw-r--r--intl/locale/tests/unit/data/intl_on_workers_worker.js4
-rw-r--r--intl/locale/tests/unit/test_bug1086527.js20
-rw-r--r--intl/locale/tests/unit/test_bug22310.js54
-rw-r--r--intl/locale/tests/unit/test_bug371611.js26
-rw-r--r--intl/locale/tests/unit/test_bug374040.js39
-rw-r--r--intl/locale/tests/unit/test_collation_mac_icu.js83
-rw-r--r--intl/locale/tests/unit/test_intl_on_workers.js23
-rw-r--r--intl/locale/tests/unit/test_pluralForm.js615
-rw-r--r--intl/locale/tests/unit/test_pluralForm_english.js26
-rw-r--r--intl/locale/tests/unit/test_pluralForm_makeGetter.js36
-rw-r--r--intl/locale/tests/unit/xpcshell.ini22
12 files changed, 949 insertions, 0 deletions
diff --git a/intl/locale/tests/unit/data/chrome.manifest b/intl/locale/tests/unit/data/chrome.manifest
new file mode 100644
index 000000000..a8678deef
--- /dev/null
+++ b/intl/locale/tests/unit/data/chrome.manifest
@@ -0,0 +1 @@
+content locale ./
diff --git a/intl/locale/tests/unit/data/intl_on_workers_worker.js b/intl/locale/tests/unit/data/intl_on_workers_worker.js
new file mode 100644
index 000000000..98aeeb5c0
--- /dev/null
+++ b/intl/locale/tests/unit/data/intl_on_workers_worker.js
@@ -0,0 +1,4 @@
+self.onmessage = function (data) {
+ let myLocale = Intl.NumberFormat().resolvedOptions().locale;
+ self.postMessage(myLocale);
+};
diff --git a/intl/locale/tests/unit/test_bug1086527.js b/intl/locale/tests/unit/test_bug1086527.js
new file mode 100644
index 000000000..ae0c5b17a
--- /dev/null
+++ b/intl/locale/tests/unit/test_bug1086527.js
@@ -0,0 +1,20 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/**
+ * This unit test makes sure that PluralForm.get can be called from strict mode
+ */
+
+Components.utils.import("resource://gre/modules/PluralForm.jsm");
+
+delete PluralForm.numForms;
+delete PluralForm.get;
+[PluralForm.get, PluralForm.numForms] = PluralForm.makeGetter(9);
+
+function run_test() {
+ "use strict";
+
+ do_check_eq(3, PluralForm.numForms());
+ do_check_eq("one", PluralForm.get(5, 'one;many'));
+}
diff --git a/intl/locale/tests/unit/test_bug22310.js b/intl/locale/tests/unit/test_bug22310.js
new file mode 100644
index 000000000..d0877db5d
--- /dev/null
+++ b/intl/locale/tests/unit/test_bug22310.js
@@ -0,0 +1,54 @@
+String.prototype.has = function(s) { return this.indexOf(s) != -1; }
+
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+
+function dt(locale) {
+ var date = new Date("2008-06-30T13:56:34");
+ const dtOptions = { year: 'numeric', month: 'long', day: 'numeric',
+ hour: 'numeric', minute: 'numeric', second: 'numeric' };
+ return date.toLocaleString(locale, dtOptions);
+}
+
+var all_passed = true;
+const tests =
+[
+ [dt("en-US").has("June"), "month name in en-US"],
+ [dt("en-US").has("2008"), "year in en-US"],
+ [dt("da").has("jun"), "month name in da"],
+ [dt("da-DK") == dt("da"), "da same as da-DK"],
+ [dt("en-GB").has("30") && dt("en-GB").has("June") &&
+ dt("en-GB").indexOf("30") < dt("en-GB").indexOf("June"),
+ "day before month in en-GB"],
+ [dt("en-US").has("30") && dt("en-US").has("June") &&
+ dt("en-US").indexOf("30") > dt("en-US").indexOf("June"),
+ "month before day in en-US"],
+ [dt("ja-JP").has("\u5E746\u670830\u65E5"), "year month and day in ja-JP"],
+ // The Firefox locale code ja-JP-mac will be resolved to a BCP47-compliant
+ // tag ja-JP-x-lvariant-mac by uloc_toLanguageTag
+ [dt("ja-JP") == dt("ja-JP-x-lvariant-mac"), "ja-JP-x-lvariant-mac same as ja-JP"],
+ [dt("nn-NO").has("juni"), "month name in nn-NO"],
+ [dt("nb-NO").has("juni"), "month name in nb-NO"],
+ // Bug 1261775 - failures on win10
+ //[dt("no-NO").has("30. juni"), "month name in no-NO"],
+ [dt("sv-SE").has("30 jun"), "month name in sv-SE"],
+ [dt("kok").has("\u091C\u0942\u0928"), "month name in kok"],
+ [dt("ta-IN").has("\u0B9C\u0BC2\u0BA9\u0BCD"), "month name in ta-IN"],
+ [dt("ab-CD").length > 0, "fallback for ab-CD"]
+];
+
+function one_test(testcase, msg)
+{
+ if (!testcase) {
+ all_passed = false;
+ dump("Unexpected date format: " + msg + "\n");
+ }
+}
+
+function run_test()
+{
+ for (var i = 0; i < tests.length; ++i) {
+ one_test(tests[i][0], tests[i][1]);
+ }
+ do_check_true(all_passed);
+}
diff --git a/intl/locale/tests/unit/test_bug371611.js b/intl/locale/tests/unit/test_bug371611.js
new file mode 100644
index 000000000..807c9ecc5
--- /dev/null
+++ b/intl/locale/tests/unit/test_bug371611.js
@@ -0,0 +1,26 @@
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+var Cr = Components.results;
+
+function test_formatdatetime_return()
+{
+ var dateConv = Cc["@mozilla.org/intl/scriptabledateformat;1"].
+ getService(Ci.nsIScriptableDateFormat);
+
+ /* Testing if we throw instead of crashing when we are passed 0s. */
+ var x = false;
+ try {
+ dateConv.FormatDate("", Ci.nsIScriptableDateFormat.dateFormatLong,
+ 0, 0, 0);
+ }
+ catch (e if (e.result == Cr.NS_ERROR_INVALID_ARG)) {
+ x = true;
+ }
+ if (!x)
+ do_throw("FormatDate didn't throw when passed 0 for its arguments.");
+}
+
+function run_test()
+{
+ test_formatdatetime_return();
+}
diff --git a/intl/locale/tests/unit/test_bug374040.js b/intl/locale/tests/unit/test_bug374040.js
new file mode 100644
index 000000000..f662c235d
--- /dev/null
+++ b/intl/locale/tests/unit/test_bug374040.js
@@ -0,0 +1,39 @@
+function test_full() {
+ var date = new Date();
+ var scriptableDateServ =
+ Components.classes["@mozilla.org/intl/scriptabledateformat;1"].createInstance(Components.interfaces.nsIScriptableDateFormat);
+
+ var dateStrXpcom = scriptableDateServ.FormatDateTime("",
+ scriptableDateServ.dateFormatLong, scriptableDateServ.timeFormatSeconds,
+ date.getFullYear(), date.getMonth()+1, date.getDate(), date.getHours(),
+ date.getMinutes(), date.getSeconds());
+
+ var dateStrJs = date.toLocaleString();
+
+ do_check_eq(dateStrXpcom, dateStrJs);
+
+}
+
+function test_kTimeFormatSeconds() {
+ var date = new Date();
+ var scriptableDateServ =
+ Components.classes["@mozilla.org/intl/scriptabledateformat;1"].createInstance(Components.interfaces.nsIScriptableDateFormat);
+
+ var dateStrXpcom = scriptableDateServ.FormatDateTime("",
+ scriptableDateServ.dateFormatLong, scriptableDateServ.timeFormatNone,
+ date.getFullYear(), date.getMonth()+1, date.getDate(), date.getHours(),
+ date.getMinutes(), date.getSeconds());
+
+ var dateStrJs = date.toLocaleDateString()
+
+ do_check_eq(dateStrXpcom, dateStrJs);
+
+}
+
+function run_test()
+{
+ // XXX test disabled due to bug 421790
+ return;
+ test_full();
+ test_kTimeFormatSeconds();
+}
diff --git a/intl/locale/tests/unit/test_collation_mac_icu.js b/intl/locale/tests/unit/test_collation_mac_icu.js
new file mode 100644
index 000000000..32ebc60eb
--- /dev/null
+++ b/intl/locale/tests/unit/test_collation_mac_icu.js
@@ -0,0 +1,83 @@
+var {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
+
+Cu.import("resource://gre/modules/Services.jsm");
+
+function run_test()
+{
+ var input = [
+ "Argentina",
+ "Oerlikon",
+ "Offenbach",
+ "Sverige",
+ "Vaticano",
+ "Zimbabwe",
+ "la France",
+ "¡viva España!",
+ "Österreich",
+ "中国",
+ "日本",
+ "한국",
+ ];
+
+ function test(locale, expected) {
+ var localeSvc = Cc["@mozilla.org/intl/nslocaleservice;1"].
+ getService(Ci.nsILocaleService);
+ var collator = Cc["@mozilla.org/intl/collation-factory;1"].
+ createInstance(Ci.nsICollationFactory).
+ CreateCollation(localeSvc.newLocale(locale));
+ var strength = Ci.nsICollation.kCollationStrengthDefault;
+ var actual = input.sort((x, y) => collator.compareString(strength, x,y));
+ deepEqual(actual, expected, locale);
+ }
+
+ // Locale en-US; default options.
+ test("en-US", [
+ "¡viva España!",
+ "Argentina",
+ "la France",
+ "Oerlikon",
+ "Offenbach",
+ "Österreich",
+ "Sverige",
+ "Vaticano",
+ "Zimbabwe",
+ "한국",
+ "中国",
+ "日本",
+ ]);
+
+ // Locale sv-SE; default options.
+ // Swedish treats "Ö" as a separate character, which sorts after "Z".
+ test("sv-SE", [
+ "¡viva España!",
+ "Argentina",
+ "la France",
+ "Oerlikon",
+ "Offenbach",
+ "Sverige",
+ "Vaticano",
+ "Zimbabwe",
+ "Österreich",
+ "한국",
+ "中国",
+ "日本",
+ ]);
+
+ // Locale de-DE; default options.
+ // In German standard sorting, umlauted characters are treated as variants
+ // of their base characters: ä ≅ a, ö ≅ o, ü ≅ u.
+ test("de-DE", [
+ "¡viva España!",
+ "Argentina",
+ "la France",
+ "Oerlikon",
+ "Offenbach",
+ "Österreich",
+ "Sverige",
+ "Vaticano",
+ "Zimbabwe",
+ "한국",
+ "中国",
+ "日本",
+ ]);
+}
diff --git a/intl/locale/tests/unit/test_intl_on_workers.js b/intl/locale/tests/unit/test_intl_on_workers.js
new file mode 100644
index 000000000..899e39d38
--- /dev/null
+++ b/intl/locale/tests/unit/test_intl_on_workers.js
@@ -0,0 +1,23 @@
+function run_test() {
+ do_load_manifest("data/chrome.manifest");
+
+ if (typeof Intl !== "object") {
+ dump("Intl not enabled, skipping test\n");
+ equal(true, true);
+ return;
+ }
+
+ let mainThreadLocale = Intl.NumberFormat().resolvedOptions().locale;
+ let testWorker = new Worker("chrome://locale/content/intl_on_workers_worker.js");
+ testWorker.onmessage = function (e) {
+ try {
+ let workerLocale = e.data;
+ equal(mainThreadLocale, workerLocale, "Worker should inherit Intl locale from main thread.");
+ } finally {
+ do_test_finished();
+ }
+ };
+
+ do_test_pending();
+ testWorker.postMessage("go!");
+}
diff --git a/intl/locale/tests/unit/test_pluralForm.js b/intl/locale/tests/unit/test_pluralForm.js
new file mode 100644
index 000000000..834605b1f
--- /dev/null
+++ b/intl/locale/tests/unit/test_pluralForm.js
@@ -0,0 +1,615 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/**
+ * Make sure each of the plural forms have the correct number of forms and
+ * match up in functionality.
+ */
+
+Components.utils.import("resource://gre/modules/PluralForm.jsm");
+
+function run_test()
+{
+ let allExpect = [[
+ // 0: Chinese 0-9, 10-19, ..., 90-99
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ // 100-109, 110-119, ..., 190-199
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ // 200-209, 210-219, ..., 290-299
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ ], [
+ // 1: English 0-9, 10-19, ..., 90-99
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ // 100-109, 110-119, ..., 190-199
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ // 200-209, 210-219, ..., 290-299
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ ], [
+ // 2: French 0-9, 10-19, ..., 90-99
+ 1,1,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ // 100-109, 110-119, ..., 190-199
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ // 200-209, 210-219, ..., 290-299
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ ], [
+ // 3: Latvian 0-9, 10-19, ..., 90-99
+ 1,2,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ // 100-109, 110-119, ..., 190-199
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ // 200-209, 210-219, ..., 290-299
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ 3,2,3,3,3,3,3,3,3,3,
+ ], [
+ // 4: Scottish Gaelic 0-9, 10-19, ..., 90-99
+ 4,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ // 100-109, 110-119, ..., 190-199
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ // 200-209, 210-219, ..., 290-299
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ ], [
+ // 5: Romanian 0-9, 10-19, ..., 90-99
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ // 100-109, 110-119, ..., 190-199
+ 3,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ // 200-209, 210-219, ..., 290-299
+ 3,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ ], [
+ // 6: Lithuanian 0-9, 10-19, ..., 90-99
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,1,3,3,3,3,3,3,3,3,
+ // 100-109, 110-119, ..., 190-199
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,1,3,3,3,3,3,3,3,3,
+ // 200-209, 210-219, ..., 290-299
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,1,3,3,3,3,3,3,3,3,
+ 2,1,3,3,3,3,3,3,3,3,
+ ], [
+ // 7: Russian 0-9, 10-19, ..., 90-99
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ // 100-109, 110-119, ..., 190-199
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ // 200-209, 210-219, ..., 290-299
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,1,2,2,2,3,3,3,3,3,
+ ], [
+ // 8: Slovak 0-9, 10-19, ..., 90-99
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ // 100-109, 110-119, ..., 190-199
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ // 200-209, 210-219, ..., 290-299
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ ], [
+ // 9: Polish 0-9, 10-19, ..., 90-99
+ 3,1,2,2,2,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ // 100-109, 110-119, ..., 190-199
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ // 200-209, 210-219, ..., 290-299
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,3,3,3,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ 3,3,2,2,2,3,3,3,3,3,
+ ], [
+ // 10: Slovenian 0-9, 10-19, ..., 90-99
+ 4,1,2,3,3,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ // 100-109, 110-119, ..., 190-199
+ 4,1,2,3,3,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ // 200-209, 210-219, ..., 290-299
+ 4,1,2,3,3,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ ], [
+ // 11: Irish Gaeilge 0-9, 10-19, ..., 90-99
+ 5,1,2,3,3,3,3,4,4,4,
+ 4,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ // 100-109, 110-119, ..., 190-199
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ // 200-209, 210-219, ..., 290-299
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,5,5,5,5,5,5,5,5,5,
+ ], [
+ // 12: Arabic 0-9, 10-19, ..., 90-99
+ 6,1,2,3,3,3,3,3,3,3,
+ 3,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ // 100-109, 110-119, ..., 190-199
+ 5,5,5,3,3,3,3,3,3,3,
+ 3,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ // 200-209, 210-219, ..., 290-299
+ 5,5,5,3,3,3,3,3,3,3,
+ 3,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ ], [
+ // 13: Maltese 0-9, 10-19, ..., 90-99
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,3,3,3,3,3,3,3,3,3,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ // 100-109, 110-119, ..., 190-199
+ 4,2,2,2,2,2,2,2,2,2,
+ 2,3,3,3,3,3,3,3,3,3,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ // 200-209, 210-219, ..., 290-299
+ 4,2,2,2,2,2,2,2,2,2,
+ 2,3,3,3,3,3,3,3,3,3,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,
+ ], [
+ // 14: Macedonian 0-9, 10-19, ..., 90-99
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ // 100-109, 110-119, ..., 190-199
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ // 200-209, 210-219, ..., 290-299
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ 3,1,2,3,3,3,3,3,3,3,
+ ], [
+ // 15: Icelandic 0-9, 10-19, ..., 90-99
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ // 100-109, 110-119, ..., 190-199
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ // 200-209, 210-219, ..., 290-299
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ 2,1,2,2,2,2,2,2,2,2,
+ ], [
+ // 16: Breton 0-9, 10-19, ..., 90-99
+ 5,1,2,3,3,5,5,5,5,3,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,1,2,3,3,5,5,5,5,3,
+ 5,1,2,3,3,5,5,5,5,3,
+ 5,1,2,3,3,5,5,5,5,3,
+ 5,1,2,3,3,5,5,5,5,3,
+ 5,1,2,3,3,5,5,5,5,3,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,1,2,3,3,5,5,5,5,3,
+ 5,5,5,5,5,5,5,5,5,5,
+ // 100-109, 110-119, ..., 190-199
+ 5,1,2,3,3,5,5,5,5,3,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,1,2,3,3,5,5,5,5,3,
+ 5,1,2,3,3,5,5,5,5,3,
+ 5,1,2,3,3,5,5,5,5,3,
+ 5,1,2,3,3,5,5,5,5,3,
+ 5,1,2,3,3,5,5,5,5,3,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,1,2,3,3,5,5,5,5,3,
+ 5,5,5,5,5,5,5,5,5,5,
+ // 200-209, 210-219, ..., 290-299
+ 5,1,2,3,3,5,5,5,5,3,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,1,2,3,3,5,5,5,5,3,
+ 5,1,2,3,3,5,5,5,5,3,
+ 5,1,2,3,3,5,5,5,5,3,
+ 5,1,2,3,3,5,5,5,5,3,
+ 5,1,2,3,3,5,5,5,5,3,
+ 5,5,5,5,5,5,5,5,5,5,
+ 5,1,2,3,3,5,5,5,5,3,
+ 5,5,5,5,5,5,5,5,5,5,
+ ]];
+
+ for (let [rule, expect] in Iterator(allExpect)) {
+ print("\nTesting rule #" + rule);
+
+ let [get, numForms] = PluralForm.makeGetter(rule);
+
+ // Make sure the largest value expected matches the number of plural forms
+ let maxExpect = Math.max.apply(this, expect);
+ do_check_eq(maxExpect, numForms());
+
+ // Make a string of numbers, e.g., 1;2;3;4;5
+ let words = [];
+ for (let i = 1; i <= maxExpect; i++)
+ words.push(i);
+ words = words.join(";");
+
+ // Make sure we get the expected number
+ for (let [index, number] in Iterator(expect)) {
+ print(["Plural form of ", index, " should be ", number, " (", words, ")"].join(""));
+ do_check_eq(get(index, words), number);
+ }
+ }
+}
diff --git a/intl/locale/tests/unit/test_pluralForm_english.js b/intl/locale/tests/unit/test_pluralForm_english.js
new file mode 100644
index 000000000..bdd7d2749
--- /dev/null
+++ b/intl/locale/tests/unit/test_pluralForm_english.js
@@ -0,0 +1,26 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/**
+ * This unit test makes sure the plural form for the default language (by
+ * development), English, is working for the PluralForm javascript module.
+ */
+
+Components.utils.import("resource://gre/modules/PluralForm.jsm");
+
+function run_test()
+{
+ // English has 2 plural forms
+ do_check_eq(2, PluralForm.numForms());
+
+ // Make sure for good inputs, things work as expected
+ for (var num = 0; num <= 200; num++)
+ do_check_eq(num == 1 ? "word" : "words", PluralForm.get(num, "word;words"));
+
+ // Not having enough plural forms defaults to the first form
+ do_check_eq("word", PluralForm.get(2, "word"));
+
+ // Empty forms defaults to the first form
+ do_check_eq("word", PluralForm.get(2, "word;"));
+}
diff --git a/intl/locale/tests/unit/test_pluralForm_makeGetter.js b/intl/locale/tests/unit/test_pluralForm_makeGetter.js
new file mode 100644
index 000000000..4d0928ae4
--- /dev/null
+++ b/intl/locale/tests/unit/test_pluralForm_makeGetter.js
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/**
+ * This unit test makes sure the plural form for Irish Gaeilge is working by
+ * using the makeGetter method instead of using the default language (by
+ * development), English.
+ */
+
+Components.utils.import("resource://gre/modules/PluralForm.jsm");
+
+function run_test()
+{
+ // Irish is plural rule #11
+ let [get, numForms] = PluralForm.makeGetter(11);
+
+ // Irish has 5 plural forms
+ do_check_eq(5, numForms());
+
+ // I don't really know Irish, so I'll stick in some dummy text
+ let words = "is 1;is 2;is 3-6;is 7-10;everything else";
+
+ let test = function(text, low, high) {
+ for (let num = low; num <= high; num++)
+ do_check_eq(text, get(num, words));
+ };
+
+ // Make sure for good inputs, things work as expected
+ test("everything else", 0, 0);
+ test("is 1", 1, 1);
+ test("is 2", 2, 2);
+ test("is 3-6", 3, 6);
+ test("is 7-10", 7, 10);
+ test("everything else", 11, 200);
+}
diff --git a/intl/locale/tests/unit/xpcshell.ini b/intl/locale/tests/unit/xpcshell.ini
new file mode 100644
index 000000000..f794fd9f4
--- /dev/null
+++ b/intl/locale/tests/unit/xpcshell.ini
@@ -0,0 +1,22 @@
+[DEFAULT]
+head =
+tail =
+support-files =
+ data/intl_on_workers_worker.js
+ data/chrome.manifest
+
+[test_bug22310.js]
+skip-if = toolkit != "windows" && toolkit != "cocoa"
+
+[test_bug371611.js]
+[test_bug374040.js]
+skip-if = toolkit == "windows" || toolkit == "cocoa"
+
+[test_collation_mac_icu.js]
+skip-if = toolkit != "cocoa"
+
+[test_bug1086527.js]
+[test_intl_on_workers.js]
+[test_pluralForm.js]
+[test_pluralForm_english.js]
+[test_pluralForm_makeGetter.js]