chromium/third_party/blink/web_tests/fast/js/script-tests/i18n-bindings-locale.js

description(

"This test checks properties and methods of Locale object."

);

function reportResult(_actual, _expected) {
    if (isResultCorrect(_actual, _expected))
        testPassed(_actual + ' is ' + _expected);
    else
        testFailed(_actual + ' should be ' + _expected);
}

localeTests = function() {
    this.defaultLocale = function() {
        var locale = new v8Locale();
        reportResult(locale.locale, 'en-US');
        reportResult(locale.language, 'en');
        reportResult(locale.script, undefined);
        reportResult(locale.region, 'US');
    };

    this.baseLocale = function() {
        var locale = new v8Locale('sr');
        reportResult(locale.locale, 'sr');
        reportResult(locale.language, 'sr');
        reportResult(locale.script, undefined);
        reportResult(locale.region, undefined);
    };

    this.languageScriptLocale = function() {
        var locale = new v8Locale('zh-Hans');
        reportResult(locale.locale, 'zh-Hans');
        reportResult(locale.language, 'zh');
        reportResult(locale.script, 'Hans');
        reportResult(locale.region, undefined);
    };

    this.languageScriptRegionLocale = function() {
        var locale = new v8Locale('zh-Hans-CN');
        reportResult(locale.locale, 'zh-Hans-CN');
        reportResult(locale.language, 'zh');
        reportResult(locale.script, 'Hans');
        reportResult(locale.region, 'CN');
    };

    this.languageScriptRegionExtensionLocale = function() {
        var locale = new v8Locale('de-DE@collation=phone');
        reportResult(locale.locale, 'de-DE@collation=phone');
        reportResult(locale.language, 'de');
        reportResult(locale.script, undefined);
        reportResult(locale.region, 'DE');
    };

    this.languageScriptRegionDashUExtensionLocale = function() {
        var locale = new v8Locale('de-DE-u-co-phonebook');
        reportResult(locale.locale, 'de-DE-u-co-phonebook');
        reportResult(locale.language, 'de');
        reportResult(locale.script, undefined);
        reportResult(locale.region, 'DE');
    };
  
    this.availableLocales = function() {
        var locales = v8Locale.availableLocales();
        reportResult(locales.length > 100, true);
        reportResult(locales.join().indexOf('sr') >= 0, true);
    };
  
    this.maximizedLocale = function() {
        var locale = new v8Locale('sr').maximizedLocale();
        reportResult(locale.locale, 'sr-Cyrl-RS');
        reportResult(locale.language, 'sr');
        reportResult(locale.script, 'Cyrl');
        reportResult(locale.region, 'RS');
    };
  
    this.maximizedLocaleWithExtension = function() {
        var locale = new v8Locale('de@collation=phone').maximizedLocale();
        reportResult(locale.locale, 'de-Latn-DE@collation=phone');
        reportResult(locale.language, 'de');
        reportResult(locale.script, 'Latn');
        reportResult(locale.region, 'DE');
    };
  
    this.minimizedLocale = function() {
        var locale = new v8Locale('sr-Cyrl-RS').minimizedLocale();
        reportResult(locale.locale, 'sr');
        reportResult(locale.language, 'sr');
        reportResult(locale.script, undefined);
        reportResult(locale.region, undefined);
    };
  
    this.minimizedLocaleWithExtension = function() {
        var locale = new v8Locale('de-Latn-DE@collation=phone').minimizedLocale();
        // FIXME: Fix ICU to return de@collation=phone.
        reportResult(locale.locale, 'de-@collation=phone');
        reportResult(locale.language, 'de');
        reportResult(locale.script, undefined);
        reportResult(locale.region, undefined);
    };
    
    this.displayForBaseLocale = function() {
        var locale = new v8Locale('en');
        reportResult(locale.displayLanguage(), 'English');
        reportResult(locale.displayScript(), undefined);
        reportResult(locale.displayRegion(), undefined);
        reportResult(locale.displayName(), 'English');
    };
  
    this.displayInSameLocale = function() {
        var locale = new v8Locale('en').maximizedLocale();
        reportResult(locale.displayLanguage(), 'English');
        reportResult(locale.displayScript(), 'Latin');
        reportResult(locale.displayRegion(), 'United States');
        reportResult(locale.displayName(), 'English (Latin, United States)');
    };
  
    this.displayInDifferentLocale = function() {
        var locale = new v8Locale('sr').maximizedLocale();
        var displayLocale = new v8Locale('en');
        reportResult(locale.displayLanguage(displayLocale), 'Serbian');
        reportResult(locale.displayScript(displayLocale), 'Cyrillic');
        reportResult(locale.displayRegion(displayLocale), 'Serbia');
        reportResult(locale.displayName(displayLocale), 'Serbian (Cyrillic, Serbia)');
    };
  
    this.displayInCyrillicScript = function() {
        var locale = new v8Locale('sr').maximizedLocale();
        reportResult(locale.displayLanguage(), 'Српски');
        reportResult(locale.displayScript(), 'Ћирилица');
        reportResult(locale.displayRegion(), 'Србија');
        reportResult(locale.displayName(), 'Српски (Ћирилица, Србија)');
    };
  
    this.displayInHebrewScript = function() {
        var locale = new v8Locale('he').maximizedLocale();
        reportResult(locale.displayLanguage(), 'עברית');
        reportResult(locale.displayScript(), 'עברי');
        reportResult(locale.displayRegion(), 'ישראל');
        reportResult(locale.displayName(), 'עברית (עברי, ישראל)');
    };
};

(function() {
    var allTests = new localeTests();
    for (var test in allTests) {
        allTests[test]();
    }
})();