michael@0: String.prototype.has = function(s) this.indexOf(s) != -1; michael@0: const Cc = Components.classes; michael@0: const Ci = Components.interfaces; michael@0: michael@0: const dts = Cc["@mozilla.org/intl/scriptabledateformat;1"] michael@0: .getService(Ci.nsIScriptableDateFormat); michael@0: function dt(locale) dts.FormatDateTime(locale, dts.dateFormatLong, michael@0: dts.timeFormatSeconds, 2008, 6, 30, 13, 56, 34); michael@0: var all_passed = true; michael@0: const tests = michael@0: [ michael@0: [dt("en-US").has("June"), "month name in en-US"], michael@0: [dt("en-US").has("2008"), "year in en-US"], michael@0: [dt("da").has("jun"), "month name in da"], michael@0: [dt("da-DK") == dt("da"), "da same as da-DK"], michael@0: [dt("en-GB").has("30") && dt("en-GB").has("June") && michael@0: dt("en-GB").indexOf("30") < dt("en-GB").indexOf("June"), michael@0: "day before month in en-GB"], michael@0: [dt("en-US").has("30") && dt("en-US").has("June") && michael@0: dt("en-US").indexOf("30") > dt("en-US").indexOf("June"), michael@0: "month before day in en-US"], michael@0: [dt("ja-JP").has("\u5E746\u670830\u65E5"), "year month and day in ja-JP"], michael@0: [dt("ja-JP") == dt("ja-JP-mac"), "ja-JP-mac same as ja-JP"], michael@0: [dt("nn-NO").has("juni"), "month name in nn-NO"], michael@0: [dt("nb-NO").has("juni"), "month name in nb-NO"], michael@0: [dt("no-NO").has("30. juni"), "month name in no-NO"], michael@0: [dt("sv-SE").has("30 jun"), "month name in sv-SE"], michael@0: [dt("kok").has("\u091C\u0942\u0928"), "month name in kok"], michael@0: [dt("ta-IN").has("\u0B9C\u0BC2\u0BA9\u0BCD"), "month name in ta-IN"], michael@0: [dt("ab-CD").length > 0, "fallback for ab-CD"] michael@0: ]; michael@0: michael@0: function one_test(testcase, msg) michael@0: { michael@0: if (!testcase) { michael@0: all_passed = false; michael@0: dump("Unexpected date format: " + msg + "\n"); michael@0: } michael@0: } michael@0: michael@0: function run_test() michael@0: { michael@0: for (var i = 0; i < tests.length; ++i) { michael@0: one_test(tests[i][0], tests[i][1]); michael@0: } michael@0: do_check_true(all_passed); michael@0: }