|
1 | 1 | /* |
2 | | - * Copyright (c) 2014, 2020, Oracle and/or its affiliates. All rights reserved. |
| 2 | + * Copyright (c) 2014, 2021, Oracle and/or its affiliates. All rights reserved. |
3 | 3 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 | 4 | * |
5 | 5 | * This code is free software; you can redistribute it and/or modify it |
|
23 | 23 |
|
24 | 24 | /* |
25 | 25 | * @test |
26 | | - * @bug 7069824 8042360 8032842 8175539 8210443 8242010 |
| 26 | + * @bug 7069824 8042360 8032842 8175539 8210443 8242010 8276302 |
27 | 27 | * @summary Verify implementation for Locale matching. |
28 | 28 | * @run testng/othervm Bug7069824 |
29 | 29 | */ |
@@ -208,27 +208,61 @@ Object[][] LFilterNPEData() { |
208 | 208 | Object[][] LFilterTagsData() { |
209 | 209 | return new Object[][] { |
210 | 210 | // Range, LanguageTags, FilteringMode, Expected language tags |
| 211 | + {"fr-FR, fr-BG;q=0.8, *;q=0.5, en;q=0", "en-US, fr-FR, fr-CA, fr-BG", |
| 212 | + null, "fr-FR, fr-BG, fr-CA"}, |
| 213 | + {"fr-FR, fr-*-BG;q=0.8, *;q=0.5, en;q=0", "en-US, fr-FR, fr-CA, fr-BG", |
| 214 | + null, "fr-FR, fr-BG, fr-CA"}, |
| 215 | + |
211 | 216 | {"en;q=0.2, *;q=0.6, ja", "de-DE, en, ja-JP-hepburn, fr-JP, he", |
212 | | - null, "de-DE, en, ja-JP-hepburn, fr-JP, he"}, |
| 217 | + null, "ja-JP-hepburn, de-DE, en, fr-JP, he"}, |
213 | 218 | {"en;q=0.2, ja-JP, fr-JP", "de-DE, en, ja-JP-hepburn, fr, he", |
214 | 219 | null, "ja-JP-hepburn, en"}, |
215 | 220 | {"en;q=0.2, ja-JP, fr-JP, iw", "de-DE, he, en, ja-JP-hepburn, fr, he-IL", |
216 | 221 | null, "ja-JP-hepburn, he, he-IL, en"}, |
217 | 222 | {"en;q=0.2, ja-JP, fr-JP, he", "de-DE, en, ja-JP-hepburn, fr, iw-IL", |
218 | 223 | null, "ja-JP-hepburn, iw-IL, en"}, |
| 224 | + |
219 | 225 | {"de-DE", "de-DE, de-de, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, " |
220 | 226 | + "de-Latn-DE-1996, de-Deva-DE, de, de-x-DE, de-Deva", |
221 | | - MAP_EXTENDED_RANGES, "de-DE, de-DE-x-goethe"}, |
| 227 | + null, "de-DE, de-DE-x-goethe"}, |
| 228 | + {"de-*-DE", "de-DE, de-de, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, " |
| 229 | + + "de-Latn-DE-1996, de-Deva-DE, de, de-x-DE, de-Deva", |
| 230 | + null, |
| 231 | + "de-DE, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, " |
| 232 | + + "de-Latn-DE-1996, de-Deva-DE"}, |
| 233 | + |
222 | 234 | {"de-DE", "de-DE, de-de, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, " |
223 | 235 | + "de-Latn-DE-1996, de-Deva-DE, de, de-x-DE, de-Deva", |
224 | 236 | EXTENDED_FILTERING, |
225 | 237 | "de-DE, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, " |
226 | | - + "de-Latn-DE-1996, de-Deva-DE"}, |
| 238 | + + "de-Latn-DE-1996, de-Deva-DE"}, |
227 | 239 | {"de-*-DE", "de-DE, de-de, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, " |
228 | 240 | + "de-Latn-DE-1996, de-Deva-DE, de, de-x-DE, de-Deva", |
229 | 241 | EXTENDED_FILTERING, |
230 | 242 | "de-DE, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, " |
231 | | - + "de-Latn-DE-1996, de-Deva-DE"}, |
| 243 | + + "de-Latn-DE-1996, de-Deva-DE"}, |
| 244 | + |
| 245 | + {"de-DE", "de-DE, de-de, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, " |
| 246 | + + "de-Latn-DE-1996, de-Deva-DE, de, de-x-DE, de-Deva", |
| 247 | + IGNORE_EXTENDED_RANGES, |
| 248 | + "de-DE, de-DE-x-goethe"}, |
| 249 | + {"de-*-DE", "de-DE, de-de, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, " |
| 250 | + + "de-Latn-DE-1996, de-Deva-DE, de, de-x-DE, de-Deva", |
| 251 | + IGNORE_EXTENDED_RANGES, |
| 252 | + ""}, |
| 253 | + |
| 254 | + {"de-DE", "de-DE, de-de, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, " |
| 255 | + + "de-Latn-DE-1996, de-Deva-DE, de, de-x-DE, de-Deva", |
| 256 | + MAP_EXTENDED_RANGES, "de-DE, de-DE-x-goethe"}, |
| 257 | + {"de-*-DE", "de-DE, de-de, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, " |
| 258 | + + "de-Latn-DE-1996, de-Deva-DE, de, de-x-DE, de-Deva", |
| 259 | + MAP_EXTENDED_RANGES, "de-DE, de-DE-x-goethe"}, |
| 260 | + |
| 261 | + {"de-DE", "de-DE, de-de, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, " |
| 262 | + + "de-Latn-DE-1996, de-Deva-DE, de, de-x-DE, de-Deva", |
| 263 | + REJECT_EXTENDED_RANGES, "de-DE, de-DE-x-goethe"}, |
| 264 | + |
| 265 | + // The next test in this chain is in testLFilterTagsIAE. |
232 | 266 | }; |
233 | 267 | } |
234 | 268 |
|
@@ -380,6 +414,15 @@ public void testLFilterTags(String ranges, String tags, FilteringMode mode, Stri |
380 | 414 | ranges, tags, expectedTags, actualTags)); |
381 | 415 | } |
382 | 416 |
|
| 417 | + @Test(expectedExceptions = IllegalArgumentException.class) |
| 418 | + public void testLFilterTagsIAE() { |
| 419 | + String ranges = "de-*-DE"; |
| 420 | + String tags = "de-DE, de-de, de-Latn-DE, de-Latf-DE, de-DE-x-goethe, " |
| 421 | + + "de-Latn-DE-1996, de-Deva-DE, de, de-x-DE, de-Deva"; |
| 422 | + List<LanguageRange> priorityList = LanguageRange.parse(ranges); |
| 423 | + showLanguageTags(Locale.filterTags(priorityList, generateLanguageTags(tags), REJECT_EXTENDED_RANGES)); |
| 424 | + } |
| 425 | + |
383 | 426 | @Test(dataProvider = "LLookupData") |
384 | 427 | public void testLLookup(String ranges, String tags, String expectedLocale) { |
385 | 428 | List<LanguageRange> priorityList = LanguageRange.parse(ranges); |
|
0 commit comments