test262/test/intl402/9.2.1_4.js

48 lines
1.7 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.1_4
description: >
Tests that non-objects are converted to objects before
canonicalization.
author: Norbert Lindenberg
includes: [testIntl.js]
---*/
testWithIntlConstructors(function (Constructor) {
// undefined is handled separately
// null should result in a TypeError
var error;
try {
var supportedForNull = Constructor.supportedLocalesOf(null);
} catch (e) {
error = e;
}
if (error === undefined) {
$ERROR("Null as locale list was not rejected.");
} else if (error.name !== "TypeError") {
$ERROR("Null as locale list was rejected with wrong error " + error.name + ".");
}
// let's use an empty list for comparison
var supportedForEmptyList = Constructor.supportedLocalesOf([]);
// we don't compare the elements because length should be 0 - let's just verify that
if (supportedForEmptyList.length !== 0) {
$ERROR("Internal test error: Assumption about length being 0 is invalid.");
}
// most non-objects will be interpreted as empty lists because a missing length property is interpreted as 0
var supportedForNumber = Constructor.supportedLocalesOf(5);
if (supportedForNumber.length !== supportedForEmptyList.length) {
$ERROR("Supported locales differ between numeric and empty list input.");
}
var supportedForBoolean = Constructor.supportedLocalesOf(true);
if (supportedForBoolean.length !== supportedForEmptyList.length) {
$ERROR("Supported locales differ between boolean and empty list input.");
}
return true;
});