mirror of https://github.com/tc39/test262.git
46 lines
1.8 KiB
JavaScript
46 lines
1.8 KiB
JavaScript
// Copyright 2012 Mozilla Corporation. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
|
|
/*---
|
|
es5id: 9.2.2
|
|
description: >
|
|
Tests that locales that are reported by resolvedOptions are also
|
|
reported by supportedLocalesOf.
|
|
author: Norbert Lindenberg
|
|
includes: [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;
|
|
});
|