< prev index next >
test/jdk/java/util/Locale/Bug7069824.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 21,930 ****
* questions.
*/
/*
* @test
! * @bug 7069824 8042360 8032842 8175539
* @summary Verify implementation for Locale matching.
! * @run main Bug7069824
*/
import java.util.*;
import java.util.Locale.*;
import static java.util.Locale.FilteringMode.*;
import static java.util.Locale.LanguageRange.*;
! public class Bug7069824 {
!
! static boolean err = false;
!
! public static void main(String[] args) {
! testLanguageRange();
! testLocale();
!
! if (err) {
! throw new RuntimeException("Failed.");
! }
! }
! private static void testLanguageRange() {
! System.out.println("Test LanguageRange class...");
! testConstants();
! testConstructors();
! testMethods();
! }
! private static void testLocale() {
! System.out.println("Test Locale class...");
! test_filter();
! test_filterTags();
! test_lookup();
! test_lookupTag();
}
! private static void testConstants() {
! boolean error = false;
!
! if (MIN_WEIGHT != 0.0) {
! error = true;
! System.err.println(" MIN_WEIGHT should be 0.0 but got "
+ MIN_WEIGHT);
! }
!
! if (MAX_WEIGHT != 1.0) {
! error = true;
! System.err.println(" MAX_WEIGHT should be 1.0 but got "
+ MAX_WEIGHT);
}
! if (error) {
! err = true;
! System.err.println(" testConstants() failed.");
! } else {
! System.out.println(" testConstants() passed.");
! }
! }
!
! private static void testConstructors() {
! boolean error = false;
!
LanguageRange lr;
! String range;
! double weight;
!
! // Testcase for 8042360
! range = "en-Latn-1234567890";
! try {
! lr = new LanguageRange(range);
! error = true;
! System.err.println(" IAE should be thrown for LanguageRange("
! + range + ").");
! }
! catch (IllegalArgumentException ex) {
! }
!
! range = null;
! try {
lr = new LanguageRange(range);
- error = true;
- System.err.println(" NPE should be thrown for LanguageRange("
- + range + ").");
- }
- catch (NullPointerException ex) {
- }
-
- range = null;
- weight = 0.8;
- try {
- lr = new LanguageRange(range, weight);
- error = true;
- System.err.println(" NPE should be thrown for LanguageRange("
- + range + ", " + weight + ").");
- }
- catch (NullPointerException ex) {
- }
-
- range = "elvish";
- try {
- lr = new LanguageRange(range);
- }
- catch (Exception ex) {
- error = true;
- System.err.println(" " + ex
- + " should not be thrown for LanguageRange(" + range + ").");
- }
-
- range = "de-DE";
- try {
- lr = new LanguageRange(range);
- }
- catch (Exception ex) {
- error = true;
- System.err.println(" " + ex
- + " should not be thrown for LanguageRange(" + range + ").");
- }
-
- range = "ar";
- weight = 0.8;
- try {
- lr = new LanguageRange(range, weight);
- }
- catch (Exception ex) {
- error = true;
- System.err.println(" " + ex
- + " should not be thrown for LanguageRange(" + range + ", "
- + weight + ").");
- }
-
- range = "ja";
- weight = -0.8;
- try {
- lr = new LanguageRange(range, weight);
- error = true;
- System.err.println(" IAE should be thrown for LanguageRange("
- + range + ", " + weight + ").");
- }
- catch (IllegalArgumentException ex) {
- }
-
- range = "Elvish";
- weight = 3.0;
- try {
- lr = new LanguageRange(range, weight);
- error = true;
- System.err.println(" IAE should be thrown for LanguageRange("
- + range + ", " + weight + ").");
- }
- catch (IllegalArgumentException ex) {
- }
-
- String[] illformedRanges = {"-ja", "ja--JP", "en-US-", "a4r", "ar*",
- "ar-*EG", "", "abcdefghijklmn", "ja-J=", "ja-opqrstuvwxyz"};
- for (String r : illformedRanges) {
- try {
- lr = new LanguageRange(r);
- error = true;
- System.err.println(" IAE should be thrown for LanguageRange("
- + r + ").");
- }
- catch (IllegalArgumentException ex) {
- }
- }
-
-
- if (error) {
- err = true;
- System.err.println(" testConstructors() failed.");
} else {
- System.out.println(" testConstructors() passed.");
- }
- }
-
- private static void testMethods() {
- test_getRange();
- test_getWeight();
- test_equals();
- test_parse();
- test_mapEquivalents();
- }
-
- private static void test_getRange() {
- boolean error = false;
-
- String range = "ja";
- double weight = 0.5;
- LanguageRange lr = new LanguageRange(range, weight);
- if (!lr.getRange().equals(range)) {
- error = true;
- System.err.println(" LanguageRange.getRange() returned unexpected value. Expected: "
- + range + ", got: " + lr.getRange());
- }
-
- range = "en-US";
- weight = 0.5;
lr = new LanguageRange(range, weight);
- if (!lr.getRange().equals(range.toLowerCase())) {
- error = true;
- System.err.println(" LanguageRange.getRange() returned unexpected value. Expected: "
- + range + ", got: " + lr.getRange());
- }
-
- if (error) {
- err = true;
- System.err.println(" test_getRange() failed.");
- } else {
- System.out.println(" test_getRange() passed.");
- }
}
!
! private static void test_getWeight() {
! boolean error = false;
!
! String range = "ja";
! double weight = 0.5;
! LanguageRange lr = new LanguageRange(range, weight);
! if (lr.getWeight() != weight) {
! error = true;
! System.err.println(" LanguageRange.getWeight() returned unexpected value. Expected: "
+ weight + ", got: " + lr.getWeight());
}
! range = "ja";
! weight = MAX_WEIGHT; // default
! lr = new LanguageRange(range);
! if (!lr.getRange().equals(range) || lr.getWeight() != MAX_WEIGHT) {
! error = true;
! System.err.println(" LanguageRange.getWeight() returned unexpected value. Expected: "
! + weight + ", got: " + lr.getWeight());
}
! if (error) {
! err = true;
! System.err.println(" test_getWeight() failed.");
} else {
! System.out.println(" test_getWeight() passed.");
}
}
! private static void test_equals() {
! boolean error = false;
!
LanguageRange lr1 = new LanguageRange("ja", 1.0);
LanguageRange lr2 = new LanguageRange("ja");
LanguageRange lr3 = new LanguageRange("ja", 0.1);
LanguageRange lr4 = new LanguageRange("en", 1.0);
! if (!lr1.equals(lr2)) {
! error = true;
! System.err.println(" LanguageRange(LR(ja, 1.0)).equals(LR(ja)) should return true.");
! }
!
! if (lr1.equals(lr3)) {
! error = true;
! System.err.println(" LanguageRange(LR(ja, 1.0)).equals(LR(ja, 0.1)) should return false.");
! }
!
! if (lr1.equals(lr4)) {
! error = true;
! System.err.println(" LanguageRange(LR(ja, 1.0)).equals(LR(en, 1.0)) should return false.");
! }
!
! if (lr1.equals(null)) {
! error = true;
! System.err.println(" LanguageRange(LR(ja, 1.0)).equals(null) should return false.");
! }
!
! if (lr1.equals("")) {
! error = true;
! System.err.println(" LanguageRange(LR(ja, 1.0)).equals(\"\") should return false.");
!
! }
!
! if (error) {
! err = true;
! System.err.println(" test_equals() failed.");
! } else {
! System.out.println(" test_equals() passed.");
! }
! }
!
! private static void test_parse() {
! boolean error = false;
!
! List<LanguageRange> list;
! String str = null;
! try {
! list = LanguageRange.parse(str);
! error = true;
! System.err.println(" NPE should be thrown for parse("
! + str + ").");
! }
! catch (NullPointerException ex) {
! }
!
! str = "";
! try {
! list = LanguageRange.parse("");
! error = true;
! System.err.println(" IAE should be thrown for parse("
! + str + ").");
! }
! catch (IllegalArgumentException ex) {
! }
!
! str = "ja;q=3";
! try {
! list = LanguageRange.parse(str);
! error = true;
! System.err.println("IAE should be thrown for parse("
! + str + ").");
! }
! catch (IllegalArgumentException ex) {
! }
!
! str = "Accept-Language: fr-FX,de-DE;q=0.5, fr-tp-x-FOO;q=0.1,"
! + "en-X-tp;q=0.6,en-FR;q=.7,de-de;q=0.8, iw;q=0.4, "
! + "he;q=0.4, de-de;q=0.5,ja, in-tpp, in-tp;q=0.2";
! ArrayList<LanguageRange> expected = new ArrayList<>();
! expected.add(new LanguageRange("fr-fx", 1.0));
! expected.add(new LanguageRange("fr-fr", 1.0));
! expected.add(new LanguageRange("ja", 1.0));
! expected.add(new LanguageRange("in-tpp", 1.0));
! expected.add(new LanguageRange("id-tpp", 1.0));
! expected.add(new LanguageRange("en-fr", 0.7));
! expected.add(new LanguageRange("en-fx", 0.7));
! expected.add(new LanguageRange("en-x-tp", 0.6));
! expected.add(new LanguageRange("de-de", 0.5));
! expected.add(new LanguageRange("de-dd", 0.5));
! expected.add(new LanguageRange("iw", 0.4));
! expected.add(new LanguageRange("he", 0.4));
! expected.add(new LanguageRange("in-tp", 0.2));
! expected.add(new LanguageRange("id-tl", 0.2));
! expected.add(new LanguageRange("id-tp", 0.2));
! expected.add(new LanguageRange("in-tl", 0.2));
! expected.add(new LanguageRange("fr-tp-x-foo", 0.1));
! expected.add(new LanguageRange("fr-tl-x-foo", 0.1));
! List<LanguageRange> got = LanguageRange.parse(str);
! if (!areEqual(expected, got)) {
! error = true;
! System.err.println(" #1 parse() test failed.");
! }
!
! str = "Accept-Language: hak-CN;q=0.8, no-bok-NO;q=0.9, no-nyn, cmn-CN;q=0.1";
! expected = new ArrayList<>();
! expected.add(new LanguageRange("no-nyn", 1.0));
! expected.add(new LanguageRange("nn", 1.0));
! expected.add(new LanguageRange("no-bok-no", 0.9));
! expected.add(new LanguageRange("nb-no", 0.9));
! expected.add(new LanguageRange("hak-CN", 0.8));
! expected.add(new LanguageRange("zh-hakka-CN", 0.8));
! expected.add(new LanguageRange("i-hak-CN", 0.8));
! expected.add(new LanguageRange("cmn-CN", 0.1));
! expected.add(new LanguageRange("zh-cmn-CN", 0.1));
! expected.add(new LanguageRange("zh-guoyu-CN", 0.1));
! got = LanguageRange.parse(str);
! if (!areEqual(expected, got)) {
! error = true;
! System.err.println(" #2 parse() test failed.");
! }
!
! str = "Accept-Language: rki;q=0.4, no-bok-NO;q=0.9, ccq;q=0.5";
! expected = new ArrayList<>();
! expected.add(new LanguageRange("no-bok-no", 0.9));
! expected.add(new LanguageRange("nb-no", 0.9));
! expected.add(new LanguageRange("rki", 0.4));
! expected.add(new LanguageRange("ybd", 0.4));
! expected.add(new LanguageRange("ccq", 0.4));
! got = LanguageRange.parse(str);
! if (!areEqual(expected, got)) {
! error = true;
! System.err.println(" #3 parse() test failed.");
! }
!
! if (error) {
! err = true;
! System.err.println(" test_parse() failed.");
! } else {
! System.out.println(" test_parse() passed.");
! }
}
! private static boolean areEqual(List<LanguageRange> expected,
! List<LanguageRange> got) {
! boolean error = false;
!
! int expectedSize = expected.size();
! int actualSize = got.size();
!
! if (expectedSize != actualSize) {
! error = true;
!
! System.err.println(" Expected size=" + expectedSize);
! for (LanguageRange lr : expected) {
! System.err.println(" range=" + lr.getRange()
! + ", weight=" + lr.getWeight());
}
! System.out.println(" Actual size=" + actualSize);
! for (LanguageRange lr : got) {
! System.err.println(" range=" + lr.getRange()
! + ", weight=" + lr.getWeight());
}
- } else {
- for (int i = 0; i < expectedSize; i++) {
- LanguageRange lr1 = expected.get(i);
- LanguageRange lr2 = got.get(i);
! if (!lr1.getRange().equals(lr2.getRange())
! || lr1.getWeight() != lr2.getWeight()) {
! error = true;
! System.err.println(" " + i + ": Expected: range=" + lr1.getRange()
! + ", weight=" + lr1.getWeight());
! System.err.println(" " + i + ": Actual: range=" + lr2.getRange()
! + ", weight=" + lr2.getWeight());
! }
! }
}
! return !error;
}
! private static void test_mapEquivalents() {
! boolean error = false;
!
! String ranges = "zh, zh-TW;q=0.8, ar;q=0.9, EN, zh-HK, ja-JP;q=0.2, es;q=0.4";
! List<LanguageRange> priorityList = LanguageRange.parse(ranges);
! HashMap<String, List<String>> map = null;
!
! try {
! List<LanguageRange> list =
! LanguageRange.mapEquivalents(priorityList, null);
! }
! catch (Exception ex) {
! error = true;
! System.err.println(ex
! + " should not be thrown for mapEquivalents(priorityList, null).");
! }
!
! map = new HashMap<>();
! try {
! List<LanguageRange> list =
! LanguageRange.mapEquivalents(priorityList, map);
! }
! catch (Exception ex) {
! error = true;
! System.err.println(ex
! + " should not be thrown for mapEquivalents(priorityList, empty map).");
! }
!
! ArrayList<String> equivalentList = new ArrayList<>();
! equivalentList.add("ja");
! equivalentList.add("ja-Hira");
! map.put("ja", equivalentList);
! try {
! List<LanguageRange> list = LanguageRange.mapEquivalents(null, map);
! error = true;
! System.err.println("NPE should be thrown for mapEquivalents(null, map).");
! }
! catch (NullPointerException ex) {
! }
!
! map = new LinkedHashMap<>();
! ArrayList<String> equivalentList1 = new ArrayList<>();
! equivalentList1.add("ja");
! equivalentList1.add("ja-Hira");
! map.put("ja", equivalentList1);
! ArrayList<String> equivalentList2 = new ArrayList<>();
! equivalentList2.add("zh-Hans");
! equivalentList2.add("zh-Hans-CN");
! equivalentList2.add("zh-CN");
! map.put("zh", equivalentList2);
! ArrayList<String> equivalentList3 = new ArrayList<>();
! equivalentList3.add("zh-TW");
! equivalentList3.add("zh-Hant");
! map.put("zh-TW", equivalentList3);
! map.put("es", null);
! ArrayList<String> equivalentList4 = new ArrayList<>();
! map.put("en", equivalentList4);
! ArrayList<String> equivalentList5 = new ArrayList<>();
! equivalentList5.add("de");
! map.put("zh-HK", equivalentList5);
!
! ArrayList<LanguageRange> expected = new ArrayList<>();
! expected.add(new LanguageRange("zh-hans", 1.0));
! expected.add(new LanguageRange("zh-hans-cn", 1.0));
! expected.add(new LanguageRange("zh-cn", 1.0));
! expected.add(new LanguageRange("de", 1.0));
! expected.add(new LanguageRange("ar", 0.9));
! expected.add(new LanguageRange("zh-tw", 0.8));
! expected.add(new LanguageRange("zh-hant", 0.8));
! expected.add(new LanguageRange("ja-jp", 0.2));
! expected.add(new LanguageRange("ja-hira-jp", 0.2));
! List<LanguageRange> got =
! LanguageRange.mapEquivalents(priorityList, map);
!
! if (!areEqual(expected, got)) {
! error = true;
! }
!
! if (error) {
! err = true;
! System.err.println(" test_mapEquivalents() failed.");
! } else {
! System.out.println(" test_mapEquivalents() passed.");
! }
}
! private static void test_filter() {
! boolean error = false;
!
! String ranges = "ja-JP, fr-FR";
! String tags = "de-DE, en, ja-JP-hepburn, fr, he, ja-Latn-JP";
! FilteringMode mode = EXTENDED_FILTERING;
!
List<LanguageRange> priorityList = LanguageRange.parse(ranges);
List<Locale> tagList = generateLocales(tags);
String actualLocales =
showLocales(Locale.filter(priorityList, tagList, mode));
! String expectedLocales = "ja-JP-hepburn, ja-Latn-JP";
!
! if (!expectedLocales.equals(actualLocales)) {
! error = true;
! showErrorMessage("#1 filter(" + mode + ")",
! ranges, tags, expectedLocales, actualLocales);
! }
!
!
! ranges = "ja-*-JP, fr-FR";
! tags = "de-DE, en, ja-JP-hepburn, fr, he, ja-Latn-JP";
! mode = EXTENDED_FILTERING;
!
! priorityList = LanguageRange.parse(ranges);
! tagList = generateLocales(tags);
! actualLocales = showLocales(Locale.filter(priorityList, tagList, mode));
! expectedLocales = "ja-JP-hepburn, ja-Latn-JP";
!
! if (!expectedLocales.equals(actualLocales)) {
! error = true;
! showErrorMessage("#2 filter(" + mode + ")",
! ranges, tags, expectedLocales, actualLocales);
! }
!
!
! ranges = "ja-*-JP, fr-FR, de-de;q=0.2";
! tags = "de-DE, en, ja-JP-hepburn, de-de, fr, he, ja-Latn-JP";
! mode = AUTOSELECT_FILTERING;
!
! priorityList = LanguageRange.parse(ranges);
! tagList = generateLocales(tags);
! actualLocales = showLocales(Locale.filter(priorityList, tagList, mode));
! expectedLocales = "ja-JP-hepburn, ja-Latn-JP, de-DE";
!
! if (!expectedLocales.equals(actualLocales)) {
! error = true;
! showErrorMessage("#3 filter(" + mode + ")",
! ranges, tags,expectedLocales, actualLocales);
! }
!
! ranges = "ja-JP, fr-FR, de-de;q=0.2";
! tags = "de-DE, en, ja-JP-hepburn, de-de, fr, he, ja-Latn-JP";
! mode = AUTOSELECT_FILTERING;
!
! priorityList = LanguageRange.parse(ranges);
! tagList = generateLocales(tags);
! actualLocales = showLocales(Locale.filter(priorityList, tagList, mode));
! expectedLocales = "ja-JP-hepburn, de-DE";
!
! if (!expectedLocales.equals(actualLocales)) {
! error = true;
! showErrorMessage("#4 filter(" + mode + ")",
! ranges, tags, expectedLocales, actualLocales);
! }
!
!
! ranges = "en;q=0.2, ja-*-JP, fr-JP";
! tags = "de-DE, en, ja-JP-hepburn, fr, he, ja-Latn-JP";
! mode = IGNORE_EXTENDED_RANGES;
!
! priorityList = LanguageRange.parse(ranges);
! tagList = generateLocales(tags);
! actualLocales = showLocales(Locale.filter(priorityList, tagList, mode));
! expectedLocales = "en";
!
! if (!expectedLocales.equals(actualLocales)) {
! error = true;
! showErrorMessage("#5 filter(" + mode + ")",
! ranges, tags, expectedLocales, actualLocales);
! }
!
!
! ranges = "en;q=0.2, ja-*-JP, fr-JP";
! tags = "de-DE, en, ja-JP-hepburn, fr, he, ja-Latn-JP";
! mode = MAP_EXTENDED_RANGES;
!
! priorityList = LanguageRange.parse(ranges);
! tagList = generateLocales(tags);
! actualLocales = showLocales(Locale.filter(priorityList, tagList, mode));
! expectedLocales = "ja-JP-hepburn, en";
!
! if (!expectedLocales.equals(actualLocales)) {
! error = true;
! showErrorMessage("#6 filter(" + mode + ")",
! ranges, tags, expectedLocales, actualLocales);
! }
!
!
! ranges = "en;q=0.2, ja-JP, fr-JP";
! tags = "de-DE, en, ja-JP-hepburn, fr, he, ja-Latn-JP";
! mode = REJECT_EXTENDED_RANGES;
!
! priorityList = LanguageRange.parse(ranges);
! tagList = generateLocales(tags);
! actualLocales = showLocales(Locale.filter(priorityList, tagList, mode));
! expectedLocales = "ja-JP-hepburn, en";
!
! if (!expectedLocales.equals(actualLocales)) {
! error = true;
! showErrorMessage("#7 filter(" + mode + ")",
! ranges, tags, expectedLocales, actualLocales);
! }
!
!
! ranges = "en;q=0.2, ja-*-JP, fr-JP";
! tags = "de-DE, en, ja-JP-hepburn, fr, he, ja-Latn-JP";
! mode = REJECT_EXTENDED_RANGES;
!
! priorityList = LanguageRange.parse(ranges);
! tagList = generateLocales(tags);
! try {
! actualLocales =
! showLocales(Locale.filter(priorityList, tagList, mode));
! error = true;
! System.out.println("IAE should be thrown for filter("
! + mode + ").");
! }
! catch (IllegalArgumentException ex) {
}
!
! ranges = "en;q=0.2, ja-*-JP, fr-JP";
! tags = null;
! mode = REJECT_EXTENDED_RANGES;
!
! priorityList = LanguageRange.parse(ranges);
! tagList = generateLocales(tags);
! try {
! actualLocales =
! showLocales(Locale.filter(priorityList, tagList, mode));
! error = true;
! System.out.println("NPE should be thrown for filter(tags=null).");
! }
! catch (NullPointerException ex) {
! }
!
!
! ranges = null;
! tags = "de-DE, en, ja-JP-hepburn, fr, he, ja-Latn-JP";
! mode = REJECT_EXTENDED_RANGES;
!
! try {
! priorityList = LanguageRange.parse(ranges);
! tagList = generateLocales(tags);
! actualLocales =
! showLocales(Locale.filter(priorityList, tagList, mode));
! error = true;
! System.out.println("NPE should be thrown for filter(ranges=null).");
! }
! catch (NullPointerException ex) {
! }
!
!
! ranges = "en;q=0.2, ja-*-JP, fr-JP";
! tags = "";
! mode = REJECT_EXTENDED_RANGES;
!
! priorityList = LanguageRange.parse(ranges);
! tagList = generateLocales(tags);
! try {
! actualLocales =
showLocales(Locale.filter(priorityList, tagList, mode));
}
- catch (Exception ex) {
- error = true;
- System.out.println(ex
- + " should not be thrown for filter(" + ranges + ", \"\").");
- }
!
! if (error) {
! err = true;
! System.out.println(" test_filter() failed.");
! } else {
! System.out.println(" test_filter() passed.");
! }
}
! private static void test_filterTags() {
! boolean error = false;
!
! String ranges = "en;q=0.2, *;q=0.6, ja";
! String tags = "de-DE, en, ja-JP-hepburn, fr-JP, he";
!
List<LanguageRange> priorityList = LanguageRange.parse(ranges);
List<String> tagList = generateLanguageTags(tags);
! String actualTags =
! showLanguageTags(Locale.filterTags(priorityList, tagList));
! String expectedTags = tags;
!
! if (!expectedTags.equals(actualTags)) {
! error = true;
! showErrorMessage("#1 filterTags()",
! ranges, tags, expectedTags, actualTags);
! }
!
!
! ranges = "en;q=0.2, ja-JP, fr-JP";
! tags = "de-DE, en, ja-JP-hepburn, fr, he";
! priorityList = LanguageRange.parse(ranges);
! tagList = generateLanguageTags(tags);
actualTags = showLanguageTags(Locale.filterTags(priorityList, tagList));
- expectedTags = "ja-JP-hepburn, en";
-
- if (!expectedTags.equals(actualTags)) {
- error = true;
- showErrorMessage("#2 filterTags()",
- ranges, tags, expectedTags, actualTags);
- }
-
-
- ranges = "de-DE";
- tags = "de-DE, de-de, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, "
- + "de-Latn-DE-1996, de-Deva-DE, de, de-x-DE, de-Deva";
- FilteringMode mode = MAP_EXTENDED_RANGES;
- priorityList = LanguageRange.parse(ranges);
- tagList = generateLanguageTags(tags);
- actualTags = showLanguageTags(Locale.filterTags(priorityList, tagList, mode));
- expectedTags = "de-DE, de-DE-x-goethe";
-
- if (!expectedTags.equals(actualTags)) {
- error = true;
- showErrorMessage("#3 filterTags(" + mode + ")",
- ranges, tags, expectedTags, actualTags);
- }
-
-
- ranges = "de-DE";
- tags = "de-DE, de-de, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, "
- + "de-Latn-DE-1996, de-Deva-DE, de, de-x-DE, de-Deva";
- mode = EXTENDED_FILTERING;
- priorityList = LanguageRange.parse(ranges);
- tagList = generateLanguageTags(tags);
- actualTags = showLanguageTags(Locale.filterTags(priorityList, tagList, mode));
- expectedTags = "de-DE, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, "
- + "de-Latn-DE-1996, de-Deva-DE";
-
- if (!expectedTags.equals(actualTags)) {
- error = true;
- showErrorMessage("#4 filterTags(" + mode + ")",
- ranges, tags, expectedTags, actualTags);
- }
-
-
- ranges = "de-*-DE";
- tags = "de-DE, de-de, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, "
- + "de-Latn-DE-1996, de-Deva-DE, de, de-x-DE, de-Deva";
- mode = EXTENDED_FILTERING;
- priorityList = LanguageRange.parse(ranges);
- tagList = generateLanguageTags(tags);
- actualTags = showLanguageTags(Locale.filterTags(priorityList, tagList, mode));
- expectedTags = "de-DE, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, "
- + "de-Latn-DE-1996, de-Deva-DE";
-
- if (!expectedTags.equals(actualTags)) {
- error = true;
- showErrorMessage("#5 filterTags(" + mode + ")",
- ranges, tags, expectedTags, actualTags);
- }
-
- if (error) {
- err = true;
- System.out.println(" test_filterTags() failed.");
} else {
! System.out.println(" test_filterTags() passed.");
}
}
! private static void test_lookup() {
! boolean error = false;
!
! String ranges = "en;q=0.2, *-JP;q=0.6, iw";
! String tags = "de-DE, en, ja-JP-hepburn, fr-JP, he";
List<LanguageRange> priorityList = LanguageRange.parse(ranges);
List<Locale> localeList = generateLocales(tags);
String actualLocale =
Locale.lookup(priorityList, localeList).toLanguageTag();
! String expectedLocale ="he";
!
! if (!expectedLocale.equals(actualLocale)) {
! error = true;
! showErrorMessage("#1 lookup()", ranges, tags, expectedLocale, actualLocale);
! }
!
!
! ranges = "en;q=0.2, *-JP;q=0.6, iw";
! tags = "de-DE, he-IL, en, iw";
! priorityList = LanguageRange.parse(ranges);
! localeList = generateLocales(tags);
! actualLocale = Locale.lookup(priorityList, localeList).toLanguageTag();
! expectedLocale = "he";
!
! if (!expectedLocale.equals(actualLocale)) {
! error = true;
! showErrorMessage("#2 lookup()", ranges, tags, expectedLocale, actualLocale);
! }
!
!
! ranges = "en;q=0.2, ja-*-JP-x-foo;q=0.6, iw";
! tags = "de-DE, fr, en, ja-Latn-JP";
! priorityList = LanguageRange.parse(ranges);
! localeList = generateLocales(tags);
! actualLocale = Locale.lookup(priorityList, localeList).toLanguageTag();
! expectedLocale = "ja-Latn-JP";
!
! if (!expectedLocale.equals(actualLocale)) {
! error = true;
! showErrorMessage("#3 lookup()", ranges, tags, expectedLocale, actualLocale);
}
! if (error) {
! err = true;
! System.out.println(" test_lookup() failed.");
! } else {
! System.out.println(" test_lookup() passed.");
! }
! }
!
! private static void test_lookupTag() {
! boolean error = false;
!
! String ranges = "en, *";
! String tags = "es, de, ja-JP";
List<LanguageRange> priorityList = LanguageRange.parse(ranges);
List<String> tagList = generateLanguageTags(tags);
String actualTag = Locale.lookupTag(priorityList, tagList);
! String expectedTag = null;
!
! if (actualTag != null) {
! error = true;
! showErrorMessage("#1 lookupTag()", ranges, tags, expectedTag, actualTag);
! }
!
!
! ranges= "en;q=0.2, *-JP";
! tags = "de-DE, en, ja-JP-hepburn, fr-JP, en-JP";
! priorityList = LanguageRange.parse(ranges);
! tagList = generateLanguageTags(tags);
! actualTag = Locale.lookupTag(priorityList, tagList);
! expectedTag = "fr-JP";
!
! if (!expectedTag.equals(actualTag)) {
! error = true;
! showErrorMessage("#2 lookupTag()", ranges, tags, expectedTag, actualTag);
! }
!
!
! ranges = "en;q=0.2, ar-MO, iw";
! tags = "de-DE, he, fr-JP";
! priorityList = LanguageRange.parse(ranges);
! tagList = generateLanguageTags(tags);
! actualTag = Locale.lookupTag(priorityList, tagList);
! expectedTag = "he";
!
! if (!expectedTag.equals(actualTag)) {
! error = true;
! showErrorMessage("#3 lookupTag()", ranges, tags, expectedTag, actualTag);
! }
!
!
! ranges = "en;q=0.2, ar-MO, he";
! tags = "de-DE, iw, fr-JP";
! priorityList = LanguageRange.parse(ranges);
! tagList = generateLanguageTags(tags);
! actualTag = Locale.lookupTag(priorityList, tagList);
! expectedTag = "iw";
!
! if (!expectedTag.equals(actualTag)) {
! error = true;
! showErrorMessage("#4 lookupTag()", ranges, tags, expectedTag, actualTag);
! }
!
! if (error) {
! err = true;
! System.out.println(" test_lookupTag() failed.");
! } else {
! System.out.println(" test_lookupTag() passed.");
! }
}
private static List<Locale> generateLocales(String tags) {
if (tags == null) {
return null;
--- 21,403 ----
* questions.
*/
/*
* @test
! * @bug 7069824 8042360 8032842 8175539 8210443
* @summary Verify implementation for Locale matching.
! * @run testng/othervm Bug7069824
*/
import java.util.*;
import java.util.Locale.*;
import static java.util.Locale.FilteringMode.*;
import static java.util.Locale.LanguageRange.*;
+ import static org.testng.Assert.*;
! import org.testng.annotations.DataProvider;
! import org.testng.annotations.Test;
! public class Bug7069824 {
! @DataProvider(name = "LRConstructorData")
! Object[][] LRConstructorData() {
! return new Object[][] {
! // Range, Weight
! {"elvish", MAX_WEIGHT},
! {"de-DE", MAX_WEIGHT},
! {"de-Latn-DE-1996", MAX_WEIGHT},
! {"zh-Hant-CN-x-private1-private2", MAX_WEIGHT},
! {"ar", 0.8},
! {"en-US", 0.5},
! {"sr-Latn-BA", 0},
! {"ja", 1},
! };
! }
!
! @DataProvider(name = "LRConstructorNPEData")
! Object[][] LRConstructorNPEData() {
! return new Object[][] {
! // Range, Weight
! {null, MAX_WEIGHT},
! {null, 0.8},
! };
! }
!
! @DataProvider(name = "LRConstructorIAEData")
! Object[][] LRConstructorIAEData() {
! return new Object[][] {
! // Range, Weight
! {"ja", -0.8},
! {"Elvish", 3.0},
! {"-ja", MAX_WEIGHT},
! {"ja--JP", MAX_WEIGHT},
! {"en-US-", MAX_WEIGHT},
! {"a4r", MAX_WEIGHT},
! {"ar*", MAX_WEIGHT},
! {"ar-*EG", MAX_WEIGHT},
! {"abcdefghijklmn", MAX_WEIGHT},
! {"ja-J=", MAX_WEIGHT},
! {"ja-opqrstuvwxyz", MAX_WEIGHT},
! {"zh_CN", MAX_WEIGHT},
! {"1996-de-Latn", MAX_WEIGHT},
! // Testcase for 8042360
! {"en-Latn-1234567890", MAX_WEIGHT},
! };
}
! @DataProvider(name = "LRParseData")
! Object[][] LRParseData() {
! return new Object[][] {
! // Ranges, Expected result
! {"Accept-Language: fr-FX, de-DE;q=0.5, fr-tp-x-FOO;q=0.1, "
! + "en-X-tp;q=0.6, en-FR;q=0.7, de-de;q=0.8, iw;q=0.4, "
! + "he;q=0.4, de-de;q=0.5, ja, in-tpp, in-tp;q=0.2",
! List.of(new LanguageRange("fr-fx", 1.0),
! new LanguageRange("fr-fr", 1.0),
! new LanguageRange("ja", 1.0),
! new LanguageRange("in-tpp", 1.0),
! new LanguageRange("id-tpp", 1.0),
! new LanguageRange("en-fr", 0.7),
! new LanguageRange("en-fx", 0.7),
! new LanguageRange("en-x-tp", 0.6),
! new LanguageRange("de-de", 0.5),
! new LanguageRange("de-dd", 0.5),
! new LanguageRange("iw", 0.4),
! new LanguageRange("he", 0.4),
! new LanguageRange("in-tp", 0.2),
! new LanguageRange("id-tl", 0.2),
! new LanguageRange("id-tp", 0.2),
! new LanguageRange("in-tl", 0.2),
! new LanguageRange("fr-tp-x-foo", 0.1),
! new LanguageRange("fr-tl-x-foo", 0.1))},
! {"Accept-Language: hak-CN;q=0.8, no-bok-NO;q=0.9, no-nyn, cmn-CN;q=0.1",
! List.of(new LanguageRange("no-nyn", 1.0),
! new LanguageRange("nn", 1.0),
! new LanguageRange("no-bok-no", 0.9),
! new LanguageRange("nb-no", 0.9),
! new LanguageRange("hak-CN", 0.8),
! new LanguageRange("zh-hakka-CN", 0.8),
! new LanguageRange("i-hak-CN", 0.8),
! new LanguageRange("cmn-CN", 0.1),
! new LanguageRange("zh-cmn-CN", 0.1),
! new LanguageRange("zh-guoyu-CN", 0.1))},
! {"Accept-Language: rki;q=0.4, no-bok-NO;q=0.9, ccq;q=0.5",
! List.of(new LanguageRange("no-bok-no", 0.9),
! new LanguageRange("nb-no", 0.9),
! new LanguageRange("rki", 0.4),
! new LanguageRange("ybd", 0.4),
! new LanguageRange("ccq", 0.4))},
! };
! }
!
! @DataProvider(name = "LRParseIAEData")
! Object[][] LRParseIAEData() {
! return new Object[][] {
! // Ranges
! {""},
! {"ja;q=3"},
! };
! }
!
! @DataProvider(name = "LRMapEquivalentsData")
! Object[][] LRMapEquivalentsData() {
! return new Object[][] {
! // Ranges, Map, Expected result
! {LanguageRange.parse("zh, zh-TW;q=0.8, ar;q=0.9, EN, zh-HK, ja-JP;q=0.2, es;q=0.4"),
! new HashMap<>(),
! LanguageRange.parse("zh, zh-TW;q=0.8, ar;q=0.9, EN, zh-HK, ja-JP;q=0.2, es;q=0.4")},
! {LanguageRange.parse("zh, zh-TW;q=0.8, ar;q=0.9, EN, zh-HK, ja-JP;q=0.2, es;q=0.4"),
! null,
! LanguageRange.parse("zh, zh-TW;q=0.8, ar;q=0.9, EN, zh-HK, ja-JP;q=0.2, es;q=0.4")},
! {LanguageRange.parse("zh, zh-TW;q=0.8, ar;q=0.9, EN, zh-HK, ja-JP;q=0.2, es;q=0.4"),
! new LinkedHashMap<String, List<String>>() {
! {
! put("ja", List.of("ja", "ja-Hira"));
! put("zh", List.of("zh-Hans", "zh-Hans-CN", "zh-CN"));
! put("zh-TW", List.of("zh-TW", "zh-Hant"));
! put("es", null);
! put("en", List.of());
! put("zh-HK", List.of("de"));
! }
! },
! List.of(new LanguageRange("zh-hans", 1.0),
! new LanguageRange("zh-hans-cn", 1.0),
! new LanguageRange("zh-cn", 1.0),
! new LanguageRange("de", 1.0),
! new LanguageRange("ar", 0.9),
! new LanguageRange("zh-tw", 0.8),
! new LanguageRange("zh-hant", 0.8),
! new LanguageRange("ja-jp", 0.2),
! new LanguageRange("ja-hira-jp", 0.2))},
! };
! }
!
! @DataProvider(name = "LFilterData")
! Object[][] LFilterData() {
! return new Object[][] {
! // Range, LanguageTags, FilteringMode, Expected locales
! {"ja-JP, fr-FR", "de-DE, en, ja-JP-hepburn, fr, he, ja-Latn-JP",
! EXTENDED_FILTERING, "ja-JP-hepburn, ja-Latn-JP"},
! {"ja-*-JP, fr-FR", "de-DE, en, ja-JP-hepburn, fr, he, ja-Latn-JP",
! EXTENDED_FILTERING, "ja-JP-hepburn, ja-Latn-JP"},
! {"ja-*-JP, fr-FR, de-de;q=0.2", "de-DE, en, ja-JP-hepburn, de-de, fr, he, ja-Latn-JP",
! AUTOSELECT_FILTERING, "ja-JP-hepburn, ja-Latn-JP, de-DE"},
! {"ja-JP, fr-FR, de-de;q=0.2", "de-DE, en, ja-JP-hepburn, de-de, fr, he, ja-Latn-JP",
! AUTOSELECT_FILTERING, "ja-JP-hepburn, de-DE"},
! {"en;q=0.2, ja-*-JP, fr-JP", "de-DE, en, ja-JP-hepburn, fr, he, ja-Latn-JP",
! IGNORE_EXTENDED_RANGES, "en"},
! {"en;q=0.2, ja-*-JP, fr-JP", "de-DE, en, ja-JP-hepburn, fr, he, ja-Latn-JP",
! MAP_EXTENDED_RANGES, "ja-JP-hepburn, en"},
! {"en;q=0.2, ja-JP, fr-JP", "de-DE, en, ja-JP-hepburn, fr, he, ja-Latn-JP",
! REJECT_EXTENDED_RANGES, "ja-JP-hepburn, en"},
! {"en;q=0.2, ja-*-JP, fr-JP", "", REJECT_EXTENDED_RANGES, ""},
! };
! }
!
! @DataProvider(name = "LFilterNPEData")
! Object[][] LFilterNPEData() {
! return new Object[][] {
! // Range, LanguageTags, FilteringMode
! {"en;q=0.2, ja-*-JP, fr-JP", null, REJECT_EXTENDED_RANGES},
! {null, "de-DE, en, ja-JP-hepburn, fr, he, ja-Latn-JP", REJECT_EXTENDED_RANGES},
! };
! }
!
! @DataProvider(name = "LFilterTagsData")
! Object[][] LFilterTagsData() {
! return new Object[][] {
! // Range, LanguageTags, FilteringMode, Expected language tags
! {"en;q=0.2, *;q=0.6, ja", "de-DE, en, ja-JP-hepburn, fr-JP, he",
! null, "de-DE, en, ja-JP-hepburn, fr-JP, he"},
! {"en;q=0.2, ja-JP, fr-JP", "de-DE, en, ja-JP-hepburn, fr, he",
! null, "ja-JP-hepburn, en"},
! {"en;q=0.2, ja-JP, fr-JP, iw", "de-DE, he, en, ja-JP-hepburn, fr, he-IL",
! null, "ja-JP-hepburn, he, he-IL, en"},
! {"en;q=0.2, ja-JP, fr-JP, he", "de-DE, en, ja-JP-hepburn, fr, iw-IL",
! null, "ja-JP-hepburn, iw-IL, en"},
! {"de-DE", "de-DE, de-de, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, "
! + "de-Latn-DE-1996, de-Deva-DE, de, de-x-DE, de-Deva",
! MAP_EXTENDED_RANGES, "de-DE, de-DE-x-goethe"},
! {"de-DE", "de-DE, de-de, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, "
! + "de-Latn-DE-1996, de-Deva-DE, de, de-x-DE, de-Deva",
! EXTENDED_FILTERING,
! "de-DE, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, "
! + "de-Latn-DE-1996, de-Deva-DE"},
! {"de-*-DE", "de-DE, de-de, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, "
! + "de-Latn-DE-1996, de-Deva-DE, de, de-x-DE, de-Deva",
! EXTENDED_FILTERING,
! "de-DE, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, "
! + "de-Latn-DE-1996, de-Deva-DE"},
! };
! }
!
! @DataProvider(name = "LLookupData")
! Object[][] LLookupData() {
! return new Object[][] {
! // Range, LanguageTags, Expected locale
! {"en;q=0.2, *-JP;q=0.6, iw", "de-DE, en, ja-JP-hepburn, fr-JP, he", "he"},
! {"en;q=0.2, *-JP;q=0.6, iw", "de-DE, he-IL, en, iw", "he"},
! {"en;q=0.2, ja-*-JP-x-foo;q=0.6, iw", "de-DE, fr, en, ja-Latn-JP", "ja-Latn-JP"},
! };
! }
!
! @DataProvider(name = "LLookupTagData")
! Object[][] LLookupTagData() {
! return new Object[][] {
! // Range, LanguageTags, Expected language tag
! {"en, *", "es, de, ja-JP", null},
! {"en;q=0.2, *-JP", "de-DE, en, ja-JP-hepburn, fr-JP, en-JP", "fr-JP"},
! {"en;q=0.2, ar-MO, iw", "de-DE, he, fr-JP", "he"},
! {"en;q=0.2, ar-MO, he", "de-DE, iw, fr-JP", "iw"},
! {"de-DE-1996;q=0.8, en;q=0.2, iw;q=0.9, zh-Hans-CN;q=0.7", "de-DE, zh-CN, he, iw, fr-JP", "iw"},
! {"de-DE-1996;q=0.8, en;q=0.2, he;q=0.9, zh-Hans-CN;q=0.7", "de-DE, zh-CN, he, iw, fr-JP", "he"},
! };
! }
!
! @Test
! public void testLRConstants() {
! assertEquals(MIN_WEIGHT, 0.0, " MIN_WEIGHT should be 0.0 but got "
+ MIN_WEIGHT);
! assertEquals(MAX_WEIGHT, 1.0, " MAX_WEIGHT should be 1.0 but got "
+ MAX_WEIGHT);
}
! @Test(dataProvider = "LRConstructorData")
! public void testLRConstructors(String range, double weight) {
LanguageRange lr;
! if (weight == MAX_WEIGHT) {
lr = new LanguageRange(range);
} else {
lr = new LanguageRange(range, weight);
}
! assertEquals(lr.getRange(), range.toLowerCase(Locale.ROOT),
! " LR.getRange() returned unexpected value. Expected: "
! + range.toLowerCase(Locale.ROOT) + ", got: " + lr.getRange());
! assertEquals(lr.getWeight(), weight,
! " LR.getWeight() returned unexpected value. Expected: "
+ weight + ", got: " + lr.getWeight());
}
! @Test(dataProvider = "LRConstructorNPEData", expectedExceptions = NullPointerException.class)
! public void testLRConstructorNPE(String range, double weight) {
! if (weight == MAX_WEIGHT) {
! new LanguageRange(range);
! } else {
! new LanguageRange(range, weight);
! }
}
! @Test(dataProvider = "LRConstructorIAEData", expectedExceptions = IllegalArgumentException.class)
! public void testLRConstructorIAE(String range, double weight) {
! if (weight == MAX_WEIGHT) {
! new LanguageRange(range);
} else {
! new LanguageRange(range, weight);
}
}
! @Test
! public void testLREquals() {
LanguageRange lr1 = new LanguageRange("ja", 1.0);
LanguageRange lr2 = new LanguageRange("ja");
LanguageRange lr3 = new LanguageRange("ja", 0.1);
LanguageRange lr4 = new LanguageRange("en", 1.0);
! assertEquals(lr1, lr2, " LR(ja, 1.0).equals(LR(ja)) should return true.");
! assertNotEquals(lr1, lr3, " LR(ja, 1.0).equals(LR(ja, 0.1)) should return false.");
! assertNotEquals(lr1, lr4, " LR(ja, 1.0).equals(LR(en, 1.0)) should return false.");
! assertNotNull(lr1, " LR(ja, 1.0).equals(null) should return false.");
! assertNotEquals(lr1, "", " LR(ja, 1.0).equals(\"\") should return false.");
}
! @Test(dataProvider = "LRParseData")
! public void testLRParse(String ranges, List<LanguageRange> expected) {
! assertEquals(LanguageRange.parse(ranges), expected,
! " LR.parse(" + ranges + ") test failed.");
}
! @Test(expectedExceptions = NullPointerException.class)
! public void testLRParseNPE() {
! LanguageRange.parse(null);
}
! @Test(dataProvider = "LRParseIAEData", expectedExceptions = IllegalArgumentException.class)
! public void testLRParseIAE(String ranges) {
! LanguageRange.parse(ranges);
}
! @Test(dataProvider = "LRMapEquivalentsData")
! public void testLRMapEquivalents(List<Locale.LanguageRange> priorityList,
! Map<String,List<String>> map, List<LanguageRange> expected) {
! assertEquals(LanguageRange.mapEquivalents(priorityList, map), expected,
! " LR.mapEquivalents() test failed.");
}
! @Test(expectedExceptions = NullPointerException.class)
! public void testLRMapEquivalentsNPE() {
! LanguageRange.mapEquivalents(null, Map.of("ja", List.of("ja", "ja-Hira")));
}
! @Test(dataProvider = "LFilterData")
! public void testLFilter(String ranges, String tags, FilteringMode mode, String expectedLocales) {
List<LanguageRange> priorityList = LanguageRange.parse(ranges);
List<Locale> tagList = generateLocales(tags);
String actualLocales =
showLocales(Locale.filter(priorityList, tagList, mode));
! assertEquals(actualLocales, expectedLocales, showErrorMessage(" L.Filter(" + mode + ")",
! ranges, tags, expectedLocales, actualLocales));
}
! @Test(dataProvider = "LFilterNPEData", expectedExceptions = NullPointerException.class)
! public void testLFilterNPE(String ranges, String tags, FilteringMode mode) {
! List<LanguageRange> priorityList = LanguageRange.parse(ranges);
! List<Locale> tagList = generateLocales(tags);
showLocales(Locale.filter(priorityList, tagList, mode));
}
! @Test(expectedExceptions = IllegalArgumentException.class)
! public void testLFilterIAE() {
! String ranges = "en;q=0.2, ja-*-JP, fr-JP";
! String tags = "de-DE, en, ja-JP-hepburn, fr, he, ja-Latn-JP";
! List<LanguageRange> priorityList = LanguageRange.parse(ranges);
! List<Locale> tagList = generateLocales(tags);
! showLocales(Locale.filter(priorityList, tagList, REJECT_EXTENDED_RANGES));
}
! @Test(dataProvider = "LFilterTagsData")
! public void testLFilterTags(String ranges, String tags, FilteringMode mode, String expectedTags) {
List<LanguageRange> priorityList = LanguageRange.parse(ranges);
List<String> tagList = generateLanguageTags(tags);
! String actualTags;
! if (mode == null) {
actualTags = showLanguageTags(Locale.filterTags(priorityList, tagList));
} else {
! actualTags = showLanguageTags(Locale.filterTags(priorityList, tagList, mode));
}
+ assertEquals(actualTags, expectedTags,
+ showErrorMessage(" L.FilterTags(" + (mode != null ? mode : "") + ")",
+ ranges, tags, expectedTags, actualTags));
}
! @Test(dataProvider = "LLookupData")
! public void testLLookup(String ranges, String tags, String expectedLocale) {
List<LanguageRange> priorityList = LanguageRange.parse(ranges);
List<Locale> localeList = generateLocales(tags);
String actualLocale =
Locale.lookup(priorityList, localeList).toLanguageTag();
! assertEquals(actualLocale, expectedLocale, showErrorMessage(" L.Lookup()",
! ranges, tags, expectedLocale, actualLocale));
}
! @Test(dataProvider = "LLookupTagData")
! public void testLLookupTag(String ranges, String tags, String expectedTag) {
List<LanguageRange> priorityList = LanguageRange.parse(ranges);
List<String> tagList = generateLanguageTags(tags);
String actualTag = Locale.lookupTag(priorityList, tagList);
! assertEquals(actualTag, expectedTag, showErrorMessage(" L.LookupTag()",
! ranges, tags, expectedTag, actualTag));
}
private static List<Locale> generateLocales(String tags) {
if (tags == null) {
return null;
*** 948,979 ****
tagList.add(tag);
}
return tagList;
}
- private static String showPriorityList(List<LanguageRange> priorityList) {
- StringBuilder sb = new StringBuilder();
-
- Iterator<LanguageRange> itr = priorityList.iterator();
- LanguageRange lr;
- if (itr.hasNext()) {
- lr = itr.next();
- sb.append(lr.getRange());
- sb.append(";q=");
- sb.append(lr.getWeight());
- }
- while (itr.hasNext()) {
- sb.append(", ");
- lr = itr.next();
- sb.append(lr.getRange());
- sb.append(";q=");
- sb.append(lr.getWeight());
- }
-
- return sb.toString();
- }
-
private static String showLanguageTags(List<String> tags) {
StringBuilder sb = new StringBuilder();
Iterator<String> itr = tags.iterator();
if (itr.hasNext()) {
--- 421,430 ----
*** 1000,1017 ****
}
return sb.toString().trim();
}
! private static void showErrorMessage(String methodName,
String priorityList,
String tags,
String expectedTags,
String actualTags) {
! System.out.println("\nIncorrect " + methodName + " result.");
! System.out.println(" Priority list : " + priorityList);
! System.out.println(" Language tags : " + tags);
! System.out.println(" Expected value : " + expectedTags);
! System.out.println(" Actual value : " + actualTags);
}
-
}
--- 451,467 ----
}
return sb.toString().trim();
}
! private static String showErrorMessage(String methodName,
String priorityList,
String tags,
String expectedTags,
String actualTags) {
! return "Incorrect " + methodName + " result."
! + " Priority list : " + priorityList
! + " Language tags : " + tags
! + " Expected value : " + expectedTags
! + " Actual value : " + actualTags;
}
}
< prev index next >