summaryrefslogtreecommitdiff
path: root/test/suite/intl402/ch09/9.2/9.2.1_4.js
blob: b9bb9db79d47ea1473dd6ec852d7f257075f0544 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Copyright 2012 Mozilla Corporation. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/**
 * @description Tests that non-objects are converted to objects before canonicalization.
 * @author Norbert Lindenberg
 */

$INCLUDE("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;
});