blob: cb74eaad2a5352f9d81a26a2ff2737209b6cf145 [file] [log] [blame]
// Copyright 2012 Mozilla Corporation. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/**
* @description Tests that locales that are reported by resolvedOptions
* are also reported by supportedLocalesOf.
* @author Norbert Lindenberg
*/
$INCLUDE("testIntl.js");
testWithIntlConstructors(function (Constructor) {
var info = getLocaleSupportInfo(Constructor);
// this test should work equally for both matching algorithms
["lookup", "best fit"].forEach(function (matcher) {
var supportedByConstructor = info.supported.concat(info.byFallback);
var supported = Constructor.supportedLocalesOf(supportedByConstructor,
{localeMatcher: matcher});
// we could check the length first, but it's probably more interesting which locales are missing
var i = 0;
var limit = Math.min(supportedByConstructor.length, supported.length);
while (i < limit && supportedByConstructor[i] === supported[i]) {
i++;
}
if (i < supportedByConstructor.length) {
$ERROR("Locale " + supportedByConstructor[i] +
" is returned by resolvedOptions but not by supportedLocalesOf.");
} else if (i < supported.length) {
$ERROR("Locale " + supported[i] +
" is returned by supportedLocalesOf but not by resolvedOptions.");
}
});
// this test is only valid for lookup - best fit may find additional locales supported
var unsupportedByConstructor = info.unsupported;
var supported = Constructor.supportedLocalesOf(unsupportedByConstructor,
{localeMatcher: "lookup"});
if (supported.length > 0) {
$ERROR("Locale " + supported[0] +
" is returned by supportedLocalesOf but not by resolvedOptions.");
}
return true;
});