1/* 2 * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 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 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23/* 24 * 25 */ 26 27import java.text.*; 28import java.util.*; 29import sun.util.locale.provider.*; 30 31public class BreakIteratorProviderTest extends ProviderTest { 32 33 com.foo.BreakIteratorProviderImpl bip = new com.foo.BreakIteratorProviderImpl(); 34 List<Locale> availloc = Arrays.asList(BreakIterator.getAvailableLocales()); 35 List<Locale> providerloc = Arrays.asList(bip.getAvailableLocales()); 36 List<Locale> jreloc = Arrays.asList(LocaleProviderAdapter.forJRE().getAvailableLocales()); 37 List<Locale> jreimplloc = Arrays.asList(LocaleProviderAdapter.forJRE().getBreakIteratorProvider().getAvailableLocales()); 38 39 private static final int CHARACTER_INDEX = 0; 40 private static final int WORD_INDEX = 1; 41 private static final int LINE_INDEX = 2; 42 private static final int SENTENCE_INDEX = 3; 43 44 public static void main(String[] s) { 45 new BreakIteratorProviderTest(); 46 } 47 48 BreakIteratorProviderTest() { 49 availableLocalesTest(); 50 objectValidityTest(); 51 } 52 53 void availableLocalesTest() { 54 Set<Locale> localesFromAPI = new HashSet<>(availloc); 55 Set<Locale> localesExpected = new HashSet<>(jreloc); 56 localesExpected.addAll(providerloc); 57 if (localesFromAPI.equals(localesExpected)) { 58 System.out.println("availableLocalesTest passed."); 59 } else { 60 throw new RuntimeException("availableLocalesTest failed"); 61 } 62 } 63 64 void objectValidityTest() { 65 66 for (Locale target: availloc) { 67 // pure JRE implementation 68 ResourceBundle rb = ((ResourceBundleBasedAdapter)LocaleProviderAdapter.forJRE()).getLocaleData().getBreakIteratorInfo(target); 69 String[] classNames = rb.getStringArray("BreakIteratorClasses"); 70 boolean jreSupportsLocale = jreimplloc.contains(target); 71 72 // result object 73 String[] result = new String[4]; 74 result[0] = BreakIterator.getCharacterInstance(target).getClass().getName(); 75 result[1] = BreakIterator.getWordInstance(target).getClass().getName(); 76 result[2] = BreakIterator.getLineInstance(target).getClass().getName(); 77 result[3] = BreakIterator.getSentenceInstance(target).getClass().getName(); 78 79 // provider's object (if any) 80 String[] providersResult = new String[4]; 81 if (providerloc.contains(target)) { 82 providersResult[0] = bip.getCharacterInstance(target).getClass().getName(); 83 providersResult[1] = bip.getWordInstance(target).getClass().getName(); 84 providersResult[2] = bip.getLineInstance(target).getClass().getName(); 85 providersResult[3] = bip.getSentenceInstance(target).getClass().getName(); 86 } 87 88 // JRE 89 String[] jresResult = new String[4]; 90 if (jreSupportsLocale) { 91 for (int i = 0; i < 4; i++) { 92 jresResult[i] = "sun.text." + classNames[i]; 93 } 94 } 95 96 for (int i = 0; i < 4; i++) { 97 checkValidity(target, jresResult[i], providersResult[i], result[i], jreSupportsLocale); 98 } 99 } 100 } 101} 102