Test that getCanonicalLocales() returns a mutable object. (#746)

Will fix #745

Besides, add additional checks to make sure that getCanonicalLocales()
returns an array.
This commit is contained in:
jungshik 2016-08-22 14:25:00 -07:00 committed by Tom Care
parent ba32580be5
commit fb45ed9772
2 changed files with 38 additions and 1 deletions

View File

@ -8,12 +8,14 @@ info: |
8.2.1 Intl.getCanonicalLocales (locales)
1. Let ll be ? CanonicalizeLocaleList(locales).
2. Return CreateArrayFromList(ll).
includes: [compareArray.js]
---*/
var locales = ['en-US'];
var result = Intl.getCanonicalLocales(['en-US']);
assert.sameValue(Object.getPrototypeOf(result), Array.prototype, 'prototype is Array.prototype');
assert.sameValue(result.constructor, Array);
assert.notSameValue(result, locales, "result is a new array instance");
assert.sameValue(result.length, 1, "result.length");
assert(result.hasOwnProperty("0"), "result an own property `0`");

View File

@ -0,0 +1,35 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-intl.getcanonicallocales
description: >
Tests that the value returned by getCanonicalLocales is a mutable array.
info: |
8.2.1 Intl.getCanonicalLocales (locales)
1. Let ll be ? CanonicalizeLocaleList(locales).
2. Return CreateArrayFromList(ll).
includes: [propertyHelper.js]
---*/
var locales = ['en-US', 'fr'];
var result = Intl.getCanonicalLocales(locales);
verifyEnumerable(result, 0);
verifyWritable(result, 0);
verifyConfigurable(result, 0);
result = Intl.getCanonicalLocales(locales);
verifyEnumerable(result, 1);
verifyWritable(result, 1);
verifyConfigurable(result, 1);
result = Intl.getCanonicalLocales(locales);
verifyNotEnumerable(result, 'length');
verifyNotConfigurable(result, 'length');
assert.sameValue(result.length, 2);
result.length = 42;
assert.sameValue(result.length, 42);
assert.throws(RangeError, function() {
result.length = "Leo";
}, "a non-numeric value can't be set to result.length");