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