test/jdk/java/util/Locale/Bug8040211.java
changeset 50424 e878fcf66678
parent 47926 c5ad58d25a0d
child 54636 515568d2e85c
equal deleted inserted replaced
50423:82599d53dd6d 50424:e878fcf66678
     1 /*
     1 /*
     2  * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
    21  * questions.
    21  * questions.
    22  */
    22  */
    23 
    23 
    24 /*
    24 /*
    25  * @test
    25  * @test
    26  * @bug 8040211 8191404
    26  * @bug 8040211 8191404 8203872
    27  * @summary Checks the IANA language subtag registry data updation
    27  * @summary Checks the IANA language subtag registry data update
    28  *          (LSR Revision: 2017-08-15) with Locale and Locale.LanguageRange
    28  *          (LSR Revision: 2018-04-23) with Locale and Locale.LanguageRange
    29  *          class methods.
    29  *          class methods.
    30  * @run main Bug8040211
    30  * @run main Bug8040211
    31  */
    31  */
    32 
    32 
    33 import java.util.ArrayList;
    33 import java.util.ArrayList;
    65     }
    65     }
    66 
    66 
    67     private static void test_parse() {
    67     private static void test_parse() {
    68         boolean error = false;
    68         boolean error = false;
    69         String str = "Accept-Language: aam, adp, aue, bcg, cqu, ema,"
    69         String str = "Accept-Language: aam, adp, aue, bcg, cqu, ema,"
    70                 + " en-gb-oed, gti, koj, kwq, kxe, lii, lmm, mtm, ngv,"
    70                 + " en-gb-oed, gti, kdz, koj, kwq, kxe, lii, lmm, mtm, ngv,"
    71                 + " oyb, phr, pub, suj, taj;q=0.9, yug;q=0.5, gfx;q=0.4";
    71                 + " oyb, phr, pub, suj, taj;q=0.9, ar-hyw;q=0.8, yug;q=0.5, gfx;q=0.4";
    72         ArrayList<LanguageRange> expected = new ArrayList<>();
    72         ArrayList<LanguageRange> expected = new ArrayList<>();
    73         expected.add(new LanguageRange("aam", 1.0));
    73         expected.add(new LanguageRange("aam", 1.0));
    74         expected.add(new LanguageRange("aas", 1.0));
    74         expected.add(new LanguageRange("aas", 1.0));
    75         expected.add(new LanguageRange("adp", 1.0));
    75         expected.add(new LanguageRange("adp", 1.0));
    76         expected.add(new LanguageRange("dz", 1.0));
    76         expected.add(new LanguageRange("dz", 1.0));
    84         expected.add(new LanguageRange("uok", 1.0));
    84         expected.add(new LanguageRange("uok", 1.0));
    85         expected.add(new LanguageRange("en-gb-oed", 1.0));
    85         expected.add(new LanguageRange("en-gb-oed", 1.0));
    86         expected.add(new LanguageRange("en-gb-oxendict", 1.0));
    86         expected.add(new LanguageRange("en-gb-oxendict", 1.0));
    87         expected.add(new LanguageRange("gti", 1.0));
    87         expected.add(new LanguageRange("gti", 1.0));
    88         expected.add(new LanguageRange("nyc", 1.0));
    88         expected.add(new LanguageRange("nyc", 1.0));
       
    89         expected.add(new LanguageRange("kdz", 1.0));
       
    90         expected.add(new LanguageRange("ncp", 1.0));
    89         expected.add(new LanguageRange("koj", 1.0));
    91         expected.add(new LanguageRange("koj", 1.0));
    90         expected.add(new LanguageRange("kwv", 1.0));
    92         expected.add(new LanguageRange("kwv", 1.0));
    91         expected.add(new LanguageRange("kwq", 1.0));
    93         expected.add(new LanguageRange("kwq", 1.0));
    92         expected.add(new LanguageRange("yam", 1.0));
    94         expected.add(new LanguageRange("yam", 1.0));
    93         expected.add(new LanguageRange("kxe", 1.0));
    95         expected.add(new LanguageRange("kxe", 1.0));
   110         expected.add(new LanguageRange("puz", 1.0));
   112         expected.add(new LanguageRange("puz", 1.0));
   111         expected.add(new LanguageRange("suj", 1.0));
   113         expected.add(new LanguageRange("suj", 1.0));
   112         expected.add(new LanguageRange("xsj", 1.0));
   114         expected.add(new LanguageRange("xsj", 1.0));
   113         expected.add(new LanguageRange("taj", 0.9));
   115         expected.add(new LanguageRange("taj", 0.9));
   114         expected.add(new LanguageRange("tsf", 0.9));
   116         expected.add(new LanguageRange("tsf", 0.9));
       
   117         expected.add(new LanguageRange("ar-hyw", 0.8));
       
   118         expected.add(new LanguageRange("ar-arevmda", 0.8));
   115         expected.add(new LanguageRange("yug", 0.5));
   119         expected.add(new LanguageRange("yug", 0.5));
   116         expected.add(new LanguageRange("yuu", 0.5));
   120         expected.add(new LanguageRange("yuu", 0.5));
   117         expected.add(new LanguageRange("gfx", 0.4));
   121         expected.add(new LanguageRange("gfx", 0.4));
   118         expected.add(new LanguageRange("oun", 0.4));
   122         expected.add(new LanguageRange("oun", 0.4));
   119         expected.add(new LanguageRange("mwj", 0.4));
   123         expected.add(new LanguageRange("mwj", 0.4));
   174     }
   178     }
   175 
   179 
   176     private static void test_filter() {
   180     private static void test_filter() {
   177         boolean error = false;
   181         boolean error = false;
   178 
   182 
   179         String ranges = "mtm-RU, en-gb-oed, coy";
   183         String ranges = "mtm-RU, en-gb-oed, coy, ar-HY";
   180         String tags = "de-DE, en, mtm-RU, ymt-RU, en-gb-oxendict, ja-JP, pij, nts";
   184         String tags = "de-DE, en, mtm-RU, ymt-RU, en-gb-oxendict, ja-JP, pij, nts, ar-arevela";
   181         FilteringMode mode = EXTENDED_FILTERING;
   185         FilteringMode mode = EXTENDED_FILTERING;
   182 
   186 
   183         List<LanguageRange> priorityList = LanguageRange.parse(ranges);
   187         List<LanguageRange> priorityList = LanguageRange.parse(ranges);
   184         List<Locale> tagList = generateLocales(tags);
   188         List<Locale> tagList = generateLocales(tags);
   185         String actualLocales
   189         String actualLocales
   186                 = showLocales(Locale.filter(priorityList, tagList, mode));
   190                 = showLocales(Locale.filter(priorityList, tagList, mode));
   187         String expectedLocales = "mtm-RU, ymt-RU, en-GB-oxendict, nts, pij";
   191         String expectedLocales = "mtm-RU, ymt-RU, en-GB-oxendict, nts, pij, ar-arevela";
   188 
   192 
   189         if (!expectedLocales.equals(actualLocales)) {
   193         if (!expectedLocales.equals(actualLocales)) {
   190             error = true;
   194             error = true;
   191             showErrorMessage("#1 filter(" + mode + ")",
   195             showErrorMessage("#1 filter(" + mode + ")",
   192                     ranges, tags, expectedLocales, actualLocales);
   196                     ranges, tags, expectedLocales, actualLocales);