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