diff options
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/i18n/messageformat_test.html')
-rw-r--r-- | contexts/data/lib/closure-library/closure/goog/i18n/messageformat_test.html | 471 |
1 files changed, 0 insertions, 471 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/i18n/messageformat_test.html b/contexts/data/lib/closure-library/closure/goog/i18n/messageformat_test.html deleted file mode 100644 index b316c71..0000000 --- a/contexts/data/lib/closure-library/closure/goog/i18n/messageformat_test.html +++ /dev/null @@ -1,471 +0,0 @@ -<!DOCTYPE html> -<html> -<!-- -Copyright 2010 The Closure Library Authors. All Rights Reserved. - -Use of this source code is governed by the Apache License, Version 2.0. -See the COPYING file for details. ---> -<head> -<meta http-equiv="X-UA-Compatible" content="IE=edge"> -<title>Closure Unit Tests - goog.i18n.MessageFormat</title> -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> -<script src="../base.js"></script> -<script> - goog.require('goog.i18n.MessageFormat'); - goog.require('goog.i18n.NumberFormatSymbols'); - goog.require('goog.i18n.NumberFormatSymbols_en'); - goog.require('goog.i18n.NumberFormatSymbols_hr'); - goog.require('goog.i18n.ordinalRules'); - goog.require('goog.i18n.pluralRules'); - goog.require('goog.testing.PropertyReplacer'); - goog.require('goog.testing.jsunit'); -</script> -</head> -<body> -<script> - -// Testing stubs that autoreset after each test run. -var stubs = new goog.testing.PropertyReplacer(); - -function tearDown() { - stubs.reset(); -} - -function testEmptyPattern() { - var fmt = new goog.i18n.MessageFormat(''); - assertEquals('', fmt.format({})); -} - -function testMissingLeftCurlyBrace() { - var err = assertThrows(function() { - new goog.i18n.MessageFormat('\'\'{}}'); - }); - assertEquals('Assertion failed: No matching { for }.', err.message); -} - -function testTooManyLeftCurlyBraces() { - var err = assertThrows(function() { - new goog.i18n.MessageFormat('{} {'); - }); - assertEquals('Assertion failed: There are mismatched { or } in the pattern.', - err.message); -} - -function testSimpleReplacement() { - var fmt = new goog.i18n.MessageFormat('New York in {SEASON} is nice.'); - assertEquals('New York in the Summer is nice.', - fmt.format({'SEASON': 'the Summer'})); -} - -function testSimpleSelect() { - var fmt = new goog.i18n.MessageFormat('{GENDER, select,' + - 'male {His} ' + - 'female {Her} ' + - 'other {Its}}' + - ' bicycle is {GENDER, select, male {blue} female {red} other {green}}.'); - - assertEquals('His bicycle is blue.', fmt.format({'GENDER': 'male'})); - assertEquals('Her bicycle is red.', fmt.format({'GENDER': 'female'})); - assertEquals('Its bicycle is green.', fmt.format({'GENDER': 'other'})); - assertEquals('Its bicycle is green.', fmt.format({'GENDER': 'whatever'})); -} - -function testSimplePlural() { - var fmt = new goog.i18n.MessageFormat('I see {NUM_PEOPLE, plural, offset:1 ' + - '=0 {no one at all in {PLACE}.} ' + - '=1 {{PERSON} in {PLACE}.} ' + - 'one {{PERSON} and one other person in {PLACE}.} ' + - 'other {{PERSON} and # other people in {PLACE}.}}'); - - assertEquals('I see no one at all in Belgrade.', - fmt.format({'NUM_PEOPLE': 0, - 'PLACE': 'Belgrade'})); - assertEquals('I see Markus in Berlin.', - fmt.format({'NUM_PEOPLE': 1, - 'PERSON': 'Markus', - 'PLACE': 'Berlin'})); - assertEquals('I see Mark and one other person in Athens.', - fmt.format({'NUM_PEOPLE': 2, - 'PERSON': 'Mark', - 'PLACE': 'Athens'})); - assertEquals('I see Cibu and 99 other people in the cubes.', - fmt.format({'NUM_PEOPLE': 100, - 'PERSON': 'Cibu', - 'PLACE': 'the cubes'})); -} - -function testSimplePluralNoOffset() { - var fmt = new goog.i18n.MessageFormat('I see {NUM_PEOPLE, plural, ' + - '=0 {no one at all} ' + - '=1 {{PERSON}} ' + - 'one {{PERSON} and one other person} ' + - 'other {{PERSON} and # other people}} in {PLACE}.'); - - assertEquals('I see no one at all in Belgrade.', - fmt.format({'NUM_PEOPLE': 0, - 'PLACE': 'Belgrade'})); - assertEquals('I see Markus in Berlin.', - fmt.format({'NUM_PEOPLE': 1, - 'PERSON': 'Markus', - 'PLACE': 'Berlin'})); - assertEquals('I see Mark and 2 other people in Athens.', - fmt.format({'NUM_PEOPLE': 2, - 'PERSON': 'Mark', - 'PLACE': 'Athens'})); - assertEquals('I see Cibu and 100 other people in the cubes.', - fmt.format({'NUM_PEOPLE': 100, - 'PERSON': 'Cibu', - 'PLACE': 'the cubes'})); -} - -function testSelectNestedInPlural() { - var fmt = new goog.i18n.MessageFormat('{CIRCLES, plural, ' + - 'one {{GENDER, select, ' + - ' female {{WHO} added you to her circle} ' + - ' other {{WHO} added you to his circle}}} ' + - 'other {{GENDER, select, ' + - ' female {{WHO} added you to her # circles} ' + - ' other {{WHO} added you to his # circles}}}}'); - - assertEquals('Jelena added you to her circle', - fmt.format({'GENDER': 'female', - 'WHO': 'Jelena', - 'CIRCLES': 1})); - assertEquals('Milan added you to his 1,234 circles', - fmt.format({'GENDER': 'male', - 'WHO': 'Milan', - 'CIRCLES': 1234})); -} - -function testPluralNestedInSelect() { - // Added offset just for testing purposes. It doesn't make sense - // to have it otherwise. - var fmt = new goog.i18n.MessageFormat('{GENDER, select, ' + - 'female {{NUM_GROUPS, plural, ' + - ' one {{WHO} added you to her group} ' + - ' other {{WHO} added you to her # groups}}} ' + - 'other {{NUM_GROUPS, plural, offset:1' + - ' one {{WHO} added you to his group} ' + - ' other {{WHO} added you to his # groups}}}}'); - - assertEquals('Jelena added you to her group', - fmt.format({'GENDER': 'female', - 'WHO': 'Jelena', - 'NUM_GROUPS': 1})); - assertEquals('Milan added you to his 1,233 groups', - fmt.format({'GENDER': 'male', - 'WHO': 'Milan', - 'NUM_GROUPS': 1234})); -} - -function testLiteralOpenCurlyBrace() { - var fmt = new goog.i18n.MessageFormat("Anna's house" + - " has '{0} and # in the roof' and {NUM_COWS} cows."); - assertEquals("Anna's house has {0} and # in the roof and 5 cows.", - fmt.format({'NUM_COWS': '5'})); -} - -function testLiteralClosedCurlyBrace() { - var fmt = new goog.i18n.MessageFormat("Anna's house" + - " has '{'0'} and # in the roof' and {NUM_COWS} cows."); - assertEquals("Anna's house has {0} and # in the roof and 5 cows.", - fmt.format({'NUM_COWS': '5'})); -} - -function testLiteralPoundSign() { - var fmt = new goog.i18n.MessageFormat("Anna's house" + - " has '{0}' and '# in the roof' and {NUM_COWS} cows."); - assertEquals("Anna's house has {0} and # in the roof and 5 cows.", - fmt.format({'NUM_COWS': '5'})); -} - -function testNoLiteralsForSingleQuotes() { - var fmt = new goog.i18n.MessageFormat("Anna's house" + - " 'has {NUM_COWS} cows'."); - assertEquals("Anna's house 'has 5 cows'.", fmt.format({'NUM_COWS': '5'})); -} - -function testConsecutiveSingleQuotesAreReplacedWithOneSingleQuote() { - var fmt = new goog.i18n.MessageFormat("Anna''s house a'{''''b'"); - assertEquals("Anna's house a{''b", fmt.format({})); -} - -function testConsecutiveSingleQuotesBeforeSpecialCharDontCreateLiteral() { - var fmt = new goog.i18n.MessageFormat("a''{NUM_COWS}'b"); - assertEquals("a'5'b", fmt.format({'NUM_COWS': '5'})); -} - -function testSerbianSimpleSelect() { - stubs.set(goog.i18n.pluralRules, 'select', goog.i18n.pluralRules.beSelect_); - - var fmt = new goog.i18n.MessageFormat('{GENDER, select, ' + - 'female {Njen} other {Njegov}} bicikl je ' + - '{GENDER, select, female {crven} other {plav}}.'); - - assertEquals('Njegov bicikl je plav.', fmt.format({'GENDER': 'male'})); - assertEquals('Njen bicikl je crven.', fmt.format({'GENDER': 'female'})); -} - -function testSerbianSimplePlural() { - stubs.set(goog.i18n.pluralRules, 'select', goog.i18n.pluralRules.beSelect_); - - var fmt = new goog.i18n.MessageFormat('Ja {NUM_PEOPLE, plural, offset:1 ' + - '=0 {ne vidim nikoga} ' + - '=1 {vidim {PERSON}} ' + - 'one {vidim {PERSON} i jos # osobu} ' + - 'few {vidim {PERSON} i jos # osobe} ' + - 'many {vidim {PERSON} i jos # osoba} ' + - 'other {{PERSON} i jos # osoba}} ' + - 'u {PLACE}.'); - - assertEquals('Ja ne vidim nikoga u Beogradu.', - fmt.format({'NUM_PEOPLE': 0, - 'PLACE': 'Beogradu'})); - assertEquals('Ja vidim Markusa u Berlinu.', - fmt.format({'NUM_PEOPLE': 1, - 'PERSON': 'Markusa', - 'PLACE': 'Berlinu'})); - assertEquals('Ja vidim Marka i jos 1 osobu u Atini.', - fmt.format({'NUM_PEOPLE': 2, - 'PERSON': 'Marka', - 'PLACE': 'Atini'})); - assertEquals('Ja vidim Petra i jos 3 osobe u muzeju.', - fmt.format({'NUM_PEOPLE': 4, - 'PERSON': 'Petra', - 'PLACE': 'muzeju'})); - assertEquals('Ja vidim Cibua i jos 99 osoba u bazenu.', - fmt.format({'NUM_PEOPLE': 100, - 'PERSON': 'Cibua', - 'PLACE': 'bazenu'})); -} - -function testSerbianSimplePluralNoOffset() { - stubs.set(goog.i18n.pluralRules, 'select', goog.i18n.pluralRules.beSelect_); - - var fmt = new goog.i18n.MessageFormat('Ja {NUM_PEOPLE, plural, ' + - '=0 {ne vidim nikoga} ' + - '=1 {vidim {PERSON}} ' + - 'one {vidim {PERSON} i jos # osobu} ' + - 'few {vidim {PERSON} i jos # osobe} ' + - 'many {vidim {PERSON} i jos # osoba} ' + - 'other {{PERSON} i jos # osoba}} ' + - 'u {PLACE}.'); - - assertEquals('Ja ne vidim nikoga u Beogradu.', - fmt.format({'NUM_PEOPLE': 0, - 'PLACE': 'Beogradu'})); - assertEquals('Ja vidim Markusa u Berlinu.', - fmt.format({'NUM_PEOPLE': 1, - 'PERSON': 'Markusa', - 'PLACE': 'Berlinu'})); - assertEquals('Ja vidim Marka i jos 21 osobu u Atini.', - fmt.format({'NUM_PEOPLE': 21, - 'PERSON': 'Marka', - 'PLACE': 'Atini'})); - assertEquals('Ja vidim Petra i jos 3 osobe u muzeju.', - fmt.format({'NUM_PEOPLE': 3, - 'PERSON': 'Petra', - 'PLACE': 'muzeju'})); - assertEquals('Ja vidim Cibua i jos 100 osoba u bazenu.', - fmt.format({'NUM_PEOPLE': 100, - 'PERSON': 'Cibua', - 'PLACE': 'bazenu'})); -} - -function testSerbianSelectNestedInPlural() { - stubs.set(goog.i18n.pluralRules, 'select', goog.i18n.pluralRules.beSelect_); - stubs.set(goog.i18n, 'NumberFormatSymbols', goog.i18n.NumberFormatSymbols_hr); - - var fmt = new goog.i18n.MessageFormat('{CIRCLES, plural, ' + - 'one {{GENDER, select, ' + - ' female {{WHO} vas je dodala u njen # kruzok} ' + - ' other {{WHO} vas je dodao u njegov # kruzok}}} ' + - 'few {{GENDER, select, ' + - ' female {{WHO} vas je dodala u njena # kruzoka} ' + - ' other {{WHO} vas je dodao u njegova # kruzoka}}} ' + - 'many {{GENDER, select, ' + - ' female {{WHO} vas je dodala u njenih # kruzoka} ' + - ' other {{WHO} vas je dodao u njegovih # kruzoka}}} ' + - 'other {{GENDER, select, ' + - ' female {{WHO} vas je dodala u njenih # kruzoka} ' + - ' other {{WHO} vas je dodao u njegovih # kruzoka}}}}'); - - assertEquals('Jelena vas je dodala u njen 21 kruzok', - fmt.format({'GENDER': 'female', - 'WHO': 'Jelena', - 'CIRCLES': 21})); - assertEquals('Jelena vas je dodala u njena 3 kruzoka', - fmt.format({'GENDER': 'female', - 'WHO': 'Jelena', - 'CIRCLES': 3})); - assertEquals('Jelena vas je dodala u njenih 5 kruzoka', - fmt.format({'GENDER': 'female', - 'WHO': 'Jelena', - 'CIRCLES': 5})); - assertEquals('Milan vas je dodao u njegovih 1.235 kruzoka', - fmt.format({'GENDER': 'male', - 'WHO': 'Milan', - 'CIRCLES': 1235})); -} - -function testFallbackToOtherOptionInPlurals() { - // Use Arabic plural rules since they have all six cases. - // Only locale and numbers matter, the actual language of the message - // does not. - stubs.set(goog.i18n.pluralRules, 'select', goog.i18n.pluralRules.arSelect_); - - var fmt = new goog.i18n.MessageFormat('{NUM_MINUTES, plural, ' + - 'other {# minutes}}'); - - // These numbers exercise all cases for the arabic plural rules. - assertEquals('0 minutes', fmt.format({'NUM_MINUTES': 0})); - assertEquals('1 minutes', fmt.format({'NUM_MINUTES': 1})); - assertEquals('2 minutes', fmt.format({'NUM_MINUTES': 2})); - assertEquals('3 minutes', fmt.format({'NUM_MINUTES': 3})); - assertEquals('11 minutes', fmt.format({'NUM_MINUTES': 11})); - assertEquals('1.5 minutes', fmt.format({'NUM_MINUTES': 1.5})); -} - -function testPoundShowsNumberMinusOffsetInAllCases() { - var fmt = new goog.i18n.MessageFormat('{SOME_NUM, plural, offset:1 ' + - '=0 {#} =1 {#} =2 {#}one {#} other {#}}'); - - assertEquals('-1', fmt.format({'SOME_NUM': '0'})); - assertEquals('0', fmt.format({'SOME_NUM': '1'})); - assertEquals('1', fmt.format({'SOME_NUM': '2'})); - assertEquals('20', fmt.format({'SOME_NUM': '21'})); -} - -function testSpecialCharactersInParamaterDontChangeFormat() { - var fmt = new goog.i18n.MessageFormat('{SOME_NUM, plural,' + - 'other {# {GROUP}}}'); - - // Test pound sign. - assertEquals('10 group#1', - fmt.format({'SOME_NUM': '10', 'GROUP': 'group#1'})); - // Test other special characters in parameters, like { and }. - assertEquals('10 } {', fmt.format({'SOME_NUM': '10', 'GROUP': '} {'})); -} - -function testMissingOrInvalidPluralParameter() { - var fmt = new goog.i18n.MessageFormat('{SOME_NUM, plural,' + - 'other {result}}'); - - // Key name doesn't match A != SOME_NUM. - assertEquals('Undefined or invalid parameter - SOME_NUM', - fmt.format({A: '10'})); - - // Value is not a number. - assertEquals('Undefined or invalid parameter - SOME_NUM', - fmt.format({'SOME_NUM': 'Value'})); -} - -function testMissingSelectParameter() { - var fmt = new goog.i18n.MessageFormat('{GENDER, select,' + - 'other {result}}'); - - // Key name doesn't match A != GENDER. - assertEquals('Undefined parameter - GENDER', - fmt.format({A: 'female'})); -} - -function testMissingSimplePlaceholder() { - var fmt = new goog.i18n.MessageFormat('{result}'); - - // Key name doesn't match A != result. - assertEquals('Undefined parameter - result', - fmt.format({A: 'none'})); -} - -function testPluralWithIgnorePound() { - var fmt = new goog.i18n.MessageFormat('{SOME_NUM, plural,' + - 'other {# {GROUP}}}'); - - // Test pound sign. - assertEquals('# group#1', - fmt.formatIgnoringPound({'SOME_NUM': '10', 'GROUP': 'group#1'})); - // Test other special characters in parameters, like { and }. - assertEquals('# } {', - fmt.formatIgnoringPound({'SOME_NUM': '10', 'GROUP': '} {'})); -} - -function testSimplePluralWithIgnorePound() { - var fmt = new goog.i18n.MessageFormat( - 'I see {NUM_PEOPLE, plural, offset:1 ' + - '=0 {no one at all in {PLACE}.} ' + - '=1 {{PERSON} in {PLACE}.} ' + - 'one {{PERSON} and one other person in {PLACE}.} ' + - 'other {{PERSON} and # other people in {PLACE}.}}'); - - assertEquals('I see Cibu and # other people in the cubes.', - fmt.formatIgnoringPound({'NUM_PEOPLE': 100, - 'PERSON': 'Cibu', - 'PLACE': 'the cubes'})); -} - -function testSimpleOrdinal() { - var fmt = new goog.i18n.MessageFormat('{NUM_FLOOR, selectordinal, ' + - 'one {Take the elevator to the #st floor.}' + - 'two {Take the elevator to the #nd floor.}' + - 'few {Take the elevator to the #rd floor.}' + - 'other {Take the elevator to the #th floor.}}'); - - assertEquals('Take the elevator to the 1st floor.', - fmt.format({'NUM_FLOOR': 1})); - assertEquals('Take the elevator to the 2nd floor.', - fmt.format({'NUM_FLOOR': 2})); - assertEquals('Take the elevator to the 3rd floor.', - fmt.format({'NUM_FLOOR': 3})); - assertEquals('Take the elevator to the 4th floor.', - fmt.format({'NUM_FLOOR': 4})); - assertEquals('Take the elevator to the 23rd floor.', - fmt.format({'NUM_FLOOR': 23})); - // Esoteric example. - assertEquals('Take the elevator to the 0th floor.', - fmt.format({'NUM_FLOOR': 0})); -} - -function testOrdinalWithNegativeValue() { - var fmt = new goog.i18n.MessageFormat('{NUM_FLOOR, selectordinal, ' + - 'one {Take the elevator to the #st floor.}' + - 'two {Take the elevator to the #nd floor.}' + - 'few {Take the elevator to the #rd floor.}' + - 'other {Take the elevator to the #th floor.}}'); - - try { - fmt.format({'NUM_FLOOR': -2}); - } catch (e) { - assertEquals('Assertion failed: Argument index smaller than offset.', - e.message); - return; - } - fail('Expected an error to be thrown'); -} - -function testSimpleOrdinalWithIgnorePound() { - var fmt = new goog.i18n.MessageFormat('{NUM_FLOOR, selectordinal, ' + - 'one {Take the elevator to the #st floor.}' + - 'two {Take the elevator to the #nd floor.}' + - 'few {Take the elevator to the #rd floor.}' + - 'other {Take the elevator to the #th floor.}}'); - - assertEquals('Take the elevator to the #th floor.', - fmt.formatIgnoringPound({'NUM_FLOOR': 100})); -} - -function testMissingOrInvalidOrdinalParameter() { - var fmt = new goog.i18n.MessageFormat('{SOME_NUM, selectordinal,' + - 'other {result}}'); - - // Key name doesn't match A != SOME_NUM. - assertEquals('Undefined or invalid parameter - SOME_NUM', - fmt.format({A: '10'})); - - // Value is not a number. - assertEquals('Undefined or invalid parameter - SOME_NUM', - fmt.format({'SOME_NUM': 'Value'})); -} -</script> -</body> -</html> |