1 /* 2 * Copyright (c) 2007, 2012, 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 27 import java.text.*; 28 import java.util.*; 29 import sun.text.resources.*; 30 import sun.util.locale.provider.*; 31 import sun.util.resources.*; 32 33 public class BreakIteratorProviderTest extends ProviderTest { 34 35 com.foo.BreakIteratorProviderImpl bip = new com.foo.BreakIteratorProviderImpl(); 36 List<Locale> availloc = Arrays.asList(BreakIterator.getAvailableLocales()); 37 List<Locale> providerloc = Arrays.asList(bip.getAvailableLocales()); 38 List<Locale> jreloc = Arrays.asList(LocaleProviderAdapter.forJRE().getAvailableLocales()); 39 List<Locale> jreimplloc = Arrays.asList(LocaleProviderAdapter.forJRE().getBreakIteratorProvider().getAvailableLocales()); 40 41 private static final int CHARACTER_INDEX = 0; 42 private static final int WORD_INDEX = 1; 43 private static final int LINE_INDEX = 2; 44 private static final int SENTENCE_INDEX = 3; 45 46 public static void main(String[] s) { 47 new BreakIteratorProviderTest(); 48 } 49 50 BreakIteratorProviderTest() { 51 availableLocalesTest(); 52 objectValidityTest(); 53 } 54 55 void availableLocalesTest() { 56 Set<Locale> localesFromAPI = new HashSet<Locale>(availloc); 57 Set<Locale> localesExpected = new HashSet<Locale>(jreimplloc); 58 localesExpected.remove(Locale.ROOT); 59 localesExpected.addAll(providerloc); 60 if (localesFromAPI.equals(localesExpected)) { 61 System.out.println("availableLocalesTest passed."); 62 } else { 63 throw new RuntimeException("availableLocalesTest failed"); 64 } 65 } 66 67 void objectValidityTest() { 68 69 for (Locale target: availloc) { 70 // pure JRE implementation 71 ResourceBundle rb = LocaleProviderAdapter.forJRE().getLocaleData().getBundle( 72 "sun.text.resources.BreakIteratorInfo", target); 73 String[] classNames = rb.getStringArray("BreakIteratorClasses"); 74 boolean jreSupportsLocale = jreimplloc.contains(target); 75 76 // result object 77 String[] result = new String[4]; 78 result[0] = BreakIterator.getCharacterInstance(target).getClass().getName(); 79 result[1] = BreakIterator.getWordInstance(target).getClass().getName(); 80 result[2] = BreakIterator.getLineInstance(target).getClass().getName(); 81 result[3] = BreakIterator.getSentenceInstance(target).getClass().getName(); 82 83 // provider's object (if any) 84 String[] providersResult = new String[4]; 85 if (providerloc.contains(target)) { 86 providersResult[0] = bip.getCharacterInstance(target).getClass().getName(); 87 providersResult[1] = bip.getWordInstance(target).getClass().getName(); 88 providersResult[2] = bip.getLineInstance(target).getClass().getName(); 89 providersResult[3] = bip.getSentenceInstance(target).getClass().getName(); 90 } 91 92 // JRE 93 String[] jresResult = new String[4]; 94 if (jreSupportsLocale) { 95 for (int i = 0; i < 4; i++) { 96 jresResult[i] = "sun.util.locale.provider."+classNames[i]; 97 } 98 } 99 100 for (int i = 0; i < 4; i++) { 101 checkValidity(target, jresResult[i], providersResult[i], result[i], jreSupportsLocale); 102 } 103 } 104 } 105 }