118 lines
4.8 KiB
JavaScript
118 lines
4.8 KiB
JavaScript
|
// Copyright 2016 the V8 project authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style license that can be
|
||
|
// found in the LICENSE file.
|
||
|
|
||
|
// No locale
|
||
|
var collatorWithOptions = new Intl.Collator(undefined);
|
||
|
var { locale, usage, collation } = collatorWithOptions.resolvedOptions();
|
||
|
assertEquals('sort', usage);
|
||
|
assertEquals('default', collation);
|
||
|
assertEquals(locale.indexOf('-co-search'), -1);
|
||
|
|
||
|
collatorWithOptions = new Intl.Collator(undefined, {usage: 'sort'});
|
||
|
var { locale, usage, collation } = collatorWithOptions.resolvedOptions();
|
||
|
assertEquals('sort', usage);
|
||
|
assertEquals('default', collation);
|
||
|
assertEquals(locale.indexOf('-co-search'), -1);
|
||
|
|
||
|
collatorWithOptions = new Intl.Collator(undefined, {usage: 'search'});
|
||
|
var { locale, usage, collation } = collatorWithOptions.resolvedOptions();
|
||
|
assertEquals('search', usage);
|
||
|
assertEquals('default', collation);
|
||
|
assertEquals(locale.indexOf('-co-search'), -1);
|
||
|
|
||
|
collatorWithOptions = new Intl.Collator(locale);
|
||
|
var { locale, usage, collation } = collatorWithOptions.resolvedOptions();
|
||
|
assertEquals('sort', usage);
|
||
|
assertEquals('default', collation);
|
||
|
assertEquals(locale.indexOf('-co-search'), -1);
|
||
|
|
||
|
// With Locale
|
||
|
collatorWithOptions = new Intl.Collator('en-US');
|
||
|
var { locale, usage, collation } = collatorWithOptions.resolvedOptions();
|
||
|
assertLanguageTag('en-US', locale);
|
||
|
assertEquals('sort', usage);
|
||
|
assertEquals('default', collation);
|
||
|
assertEquals(locale.indexOf('-co-search'), -1);
|
||
|
|
||
|
collatorWithOptions = new Intl.Collator('en-US', {usage: 'sort'});
|
||
|
var { locale, usage, collation } = collatorWithOptions.resolvedOptions();
|
||
|
assertLanguageTag('en-US', locale);
|
||
|
assertEquals('sort', usage);
|
||
|
assertEquals('default', collation);
|
||
|
assertEquals(locale.indexOf('-co-search'), -1);
|
||
|
|
||
|
collatorWithOptions = new Intl.Collator('en-US', {usage: 'search'});
|
||
|
var { locale, usage, collation } = collatorWithOptions.resolvedOptions();
|
||
|
assertEquals('search', usage);
|
||
|
assertEquals('default', collation);
|
||
|
assertLanguageTag('en-US', locale);
|
||
|
assertEquals(locale.indexOf('-co-search'), -1);
|
||
|
|
||
|
// With invalid collation value = 'search'
|
||
|
collatorWithOptions = new Intl.Collator('en-US-u-co-search');
|
||
|
var { locale, usage, collation } = collatorWithOptions.resolvedOptions();
|
||
|
assertLanguageTag('en-US', locale);
|
||
|
assertEquals('sort', usage);
|
||
|
assertEquals('default', collation);
|
||
|
assertEquals(locale.indexOf('-co-search'), -1);
|
||
|
|
||
|
collatorWithOptions = new Intl.Collator('en-US-u-co-search', {usage: 'sort'});
|
||
|
var { locale, usage, collation } = collatorWithOptions.resolvedOptions();
|
||
|
assertLanguageTag('en-US', locale);
|
||
|
assertEquals('sort', usage);
|
||
|
assertEquals('default', collation);
|
||
|
assertEquals(locale.indexOf('-co-search'), -1);
|
||
|
|
||
|
collatorWithOptions = new Intl.Collator('en-US-u-co-search', {usage: 'search'});
|
||
|
var { locale, usage, collation } = collatorWithOptions.resolvedOptions();
|
||
|
assertLanguageTag('en-US', locale);
|
||
|
assertEquals('search', usage);
|
||
|
assertEquals('default', collation);
|
||
|
assertEquals(locale.indexOf('-co-search'), -1);
|
||
|
|
||
|
// With invalid collation value = 'standard'
|
||
|
collatorWithOptions = new Intl.Collator('en-US-u-co-standard');
|
||
|
var { locale, usage, collation } = collatorWithOptions.resolvedOptions();
|
||
|
assertLanguageTag('en-US', locale);
|
||
|
assertEquals('sort', usage);
|
||
|
assertEquals('default', collation);
|
||
|
assertEquals(locale.indexOf('-co-search'), -1);
|
||
|
|
||
|
collatorWithOptions = new Intl.Collator('en-US-u-co-standard', {usage: 'sort'});
|
||
|
var { locale, usage, collation } = collatorWithOptions.resolvedOptions();
|
||
|
assertLanguageTag('en-US', locale);
|
||
|
assertEquals('sort', usage);
|
||
|
assertEquals('default', collation);
|
||
|
assertEquals(locale.indexOf('-co-search'), -1);
|
||
|
|
||
|
collatorWithOptions = new Intl.Collator('en-US-u-co-standard', {usage: 'search'});
|
||
|
var { locale, usage, collation } = collatorWithOptions.resolvedOptions();
|
||
|
assertLanguageTag('en-US', locale);
|
||
|
assertEquals('search', usage);
|
||
|
assertEquals('default', collation);
|
||
|
assertEquals(locale.indexOf('-co-search'), -1);
|
||
|
|
||
|
// With valid collation value = 'emoji'
|
||
|
collatorWithOptions = new Intl.Collator('en-US-u-co-emoji');
|
||
|
var { locale, usage, collation } = collatorWithOptions.resolvedOptions();
|
||
|
assertLanguageTag('en-US', locale);
|
||
|
assertEquals('sort', usage);
|
||
|
assertEquals('emoji', collation);
|
||
|
assertEquals(locale.indexOf('-co-search'), -1);
|
||
|
|
||
|
collatorWithOptions = new Intl.Collator('en-US-u-co-emoji', {usage: 'sort'});
|
||
|
var { locale, usage, collation } = collatorWithOptions.resolvedOptions();
|
||
|
assertLanguageTag('en-US', locale);
|
||
|
assertEquals('sort', usage);
|
||
|
assertEquals('emoji', collation);
|
||
|
assertEquals(locale.indexOf('-co-search'), -1);
|
||
|
|
||
|
collatorWithOptions = new Intl.Collator('en-US-u-co-emoji', {usage: 'search'});
|
||
|
var { locale, usage, collation } = collatorWithOptions.resolvedOptions();
|
||
|
assertLanguageTag('en-US', locale);
|
||
|
assertEquals('search', usage);
|
||
|
// usage = search overwrites emoji as a collation value.
|
||
|
assertEquals('default', collation);
|
||
|
assertEquals(locale.indexOf('-co-search'), -1);
|