| // 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); |