1de76a5adSDamjan Jovanovic /************************************************************** 2de76a5adSDamjan Jovanovic * 3de76a5adSDamjan Jovanovic * Licensed to the Apache Software Foundation (ASF) under one 4de76a5adSDamjan Jovanovic * or more contributor license agreements. See the NOTICE file 5de76a5adSDamjan Jovanovic * distributed with this work for additional information 6de76a5adSDamjan Jovanovic * regarding copyright ownership. The ASF licenses this file 7de76a5adSDamjan Jovanovic * to you under the Apache License, Version 2.0 (the 8de76a5adSDamjan Jovanovic * "License"); you may not use this file except in compliance 9de76a5adSDamjan Jovanovic * with the License. You may obtain a copy of the License at 10de76a5adSDamjan Jovanovic * 11de76a5adSDamjan Jovanovic * http://www.apache.org/licenses/LICENSE-2.0 12de76a5adSDamjan Jovanovic * 13de76a5adSDamjan Jovanovic * Unless required by applicable law or agreed to in writing, 14de76a5adSDamjan Jovanovic * software distributed under the License is distributed on an 15de76a5adSDamjan Jovanovic * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16de76a5adSDamjan Jovanovic * KIND, either express or implied. See the License for the 17de76a5adSDamjan Jovanovic * specific language governing permissions and limitations 18de76a5adSDamjan Jovanovic * under the License. 19de76a5adSDamjan Jovanovic * 20de76a5adSDamjan Jovanovic *************************************************************/ 21de76a5adSDamjan Jovanovic 22de76a5adSDamjan Jovanovic 23de76a5adSDamjan Jovanovic 242f709283SDamjan Jovanovic package api.i18n; 25de76a5adSDamjan Jovanovic 26de76a5adSDamjan Jovanovic import com.sun.star.i18n.TransliterationModules; 27de76a5adSDamjan Jovanovic import com.sun.star.i18n.TransliterationModulesNew; 28de76a5adSDamjan Jovanovic import com.sun.star.i18n.TransliterationType; 29de76a5adSDamjan Jovanovic import com.sun.star.i18n.XTransliteration; 30de76a5adSDamjan Jovanovic import com.sun.star.lang.Locale; 312f709283SDamjan Jovanovic import com.sun.star.uno.UnoRuntime; 322f709283SDamjan Jovanovic import com.sun.star.uno.XComponentContext; 332f709283SDamjan Jovanovic import org.junit.After; 342f709283SDamjan Jovanovic import org.junit.AfterClass; 352f709283SDamjan Jovanovic import org.junit.Before; 362f709283SDamjan Jovanovic import org.junit.BeforeClass; 372f709283SDamjan Jovanovic import org.junit.Assert; 382f709283SDamjan Jovanovic import org.junit.Test; 392f709283SDamjan Jovanovic import org.openoffice.test.uno.UnoApp; 40de76a5adSDamjan Jovanovic 41de76a5adSDamjan Jovanovic /** 42de76a5adSDamjan Jovanovic * Testing <code>com.sun.star.i18n.XTransliteration</code> 43de76a5adSDamjan Jovanovic * interface methods : 44de76a5adSDamjan Jovanovic * <ul> 45de76a5adSDamjan Jovanovic * <li><code> getName()</code></li> 46de76a5adSDamjan Jovanovic * <li><code> getType()</code></li> 47de76a5adSDamjan Jovanovic * <li><code> loadModule()</code></li> 48de76a5adSDamjan Jovanovic * <li><code> loadModuleNew()</code></li> 49de76a5adSDamjan Jovanovic * <li><code> loadModuleByImplName()</code></li> 50de76a5adSDamjan Jovanovic * <li><code> loadModulesByImplNames()</code></li> 51de76a5adSDamjan Jovanovic * <li><code> getAvailableModules()</code></li> 52de76a5adSDamjan Jovanovic * <li><code> transliterate()</code></li> 53de76a5adSDamjan Jovanovic * <li><code> folding()</code></li> 54de76a5adSDamjan Jovanovic * <li><code> equals()</code></li> 55de76a5adSDamjan Jovanovic * <li><code> transliterateRange()</code></li> 56de76a5adSDamjan Jovanovic * </ul> <p> 57de76a5adSDamjan Jovanovic * Test is <b> NOT </b> multithread compliant. <p> 58de76a5adSDamjan Jovanovic * @see com.sun.star.i18n.XTransliteration 59de76a5adSDamjan Jovanovic */ 602f709283SDamjan Jovanovic public class XTransliterationTest { 612f709283SDamjan Jovanovic private static final UnoApp app = new UnoApp(); 62de76a5adSDamjan Jovanovic 632f709283SDamjan Jovanovic private XComponentContext xContext = null; 64de76a5adSDamjan Jovanovic public XTransliteration oObj = null; 65de76a5adSDamjan Jovanovic private String[] mod = null ; 66de76a5adSDamjan Jovanovic private Locale loc = new Locale("en", "EN", "") ; 67de76a5adSDamjan Jovanovic 682f709283SDamjan Jovanovic 692f709283SDamjan Jovanovic // setup and close connections 702f709283SDamjan Jovanovic @BeforeClass setUpConnection()712f709283SDamjan Jovanovic public static void setUpConnection() throws Exception 722f709283SDamjan Jovanovic { 732f709283SDamjan Jovanovic app.start(); 742f709283SDamjan Jovanovic } 752f709283SDamjan Jovanovic 762f709283SDamjan Jovanovic @AfterClass tearDownConnection()772f709283SDamjan Jovanovic public static void tearDownConnection() throws InterruptedException, com.sun.star.uno.Exception 782f709283SDamjan Jovanovic { 792f709283SDamjan Jovanovic app.close(); 802f709283SDamjan Jovanovic } 812f709283SDamjan Jovanovic 822f709283SDamjan Jovanovic @Before before()832f709283SDamjan Jovanovic public void before() throws Exception { 842f709283SDamjan Jovanovic xContext = app.getComponentContext(); 852f709283SDamjan Jovanovic oObj = UnoRuntime.queryInterface( 862f709283SDamjan Jovanovic XTransliteration.class, 872f709283SDamjan Jovanovic xContext.getServiceManager().createInstanceWithContext("com.sun.star.i18n.Transliteration", xContext) 882f709283SDamjan Jovanovic ); 892f709283SDamjan Jovanovic } 902f709283SDamjan Jovanovic 91de76a5adSDamjan Jovanovic /** 92de76a5adSDamjan Jovanovic * Gets all available transliteration modules. <p> 93de76a5adSDamjan Jovanovic * Has <b>OK</b> status if array returned has at least 94de76a5adSDamjan Jovanovic * one module name. 95de76a5adSDamjan Jovanovic */ 962f709283SDamjan Jovanovic @Test _getAvailableModules()97de76a5adSDamjan Jovanovic public void _getAvailableModules() { 98de76a5adSDamjan Jovanovic mod = oObj.getAvailableModules(loc, TransliterationType.ONE_TO_ONE); 99de76a5adSDamjan Jovanovic 100de76a5adSDamjan Jovanovic if (mod != null) { 1012f709283SDamjan Jovanovic System.out.println("Available modules :") ; 102de76a5adSDamjan Jovanovic for (int i = 0; i < mod.length; i++) { 1032f709283SDamjan Jovanovic System.out.println(" '" + mod[i] + "'") ; 104de76a5adSDamjan Jovanovic } 105de76a5adSDamjan Jovanovic } else { 1062f709283SDamjan Jovanovic System.out.println("!!! NULL returned !!!") ; 107de76a5adSDamjan Jovanovic } 108de76a5adSDamjan Jovanovic 1092f709283SDamjan Jovanovic Assert.assertTrue("getAvailableModules()", mod != null && mod.length > 0) ; 110de76a5adSDamjan Jovanovic } 111de76a5adSDamjan Jovanovic 112de76a5adSDamjan Jovanovic /** 113de76a5adSDamjan Jovanovic * Calls the method for load IGNORE_CASE module and checks the name returned 114de76a5adSDamjan Jovanovic * by the method <code>getName</code>. <p> 115de76a5adSDamjan Jovanovic * Has <b>OK</b> status if the method <code>getName</code> returns the 116de76a5adSDamjan Jovanovic * string "case ignore (generic)". 117de76a5adSDamjan Jovanovic */ 1182f709283SDamjan Jovanovic @Test _loadModule()119de76a5adSDamjan Jovanovic public void _loadModule() { 1202f709283SDamjan Jovanovic System.out.println("Load module IGNORE_CASE"); 121de76a5adSDamjan Jovanovic oObj.loadModule(TransliterationModules.IGNORE_CASE, loc); 122de76a5adSDamjan Jovanovic 123de76a5adSDamjan Jovanovic String name = oObj.getName(); 124de76a5adSDamjan Jovanovic boolean res = name.equals("case ignore (generic)"); 1252f709283SDamjan Jovanovic System.out.println("getName return: " + name); 126de76a5adSDamjan Jovanovic 1272f709283SDamjan Jovanovic Assert.assertTrue("loadModule()", res ); 128de76a5adSDamjan Jovanovic } 129de76a5adSDamjan Jovanovic 130de76a5adSDamjan Jovanovic /** 131de76a5adSDamjan Jovanovic * Loads <code>LOWERCASE_UPPERCASE</code> module and checks the current 132de76a5adSDamjan Jovanovic * name of object. <p> 133de76a5adSDamjan Jovanovic * 134de76a5adSDamjan Jovanovic * Has <b>OK</b> status if the name of the object is equals to 135de76a5adSDamjan Jovanovic * 'lower_to_upper(generic)' 136de76a5adSDamjan Jovanovic */ 1372f709283SDamjan Jovanovic @Test _loadModuleNew()138de76a5adSDamjan Jovanovic public void _loadModuleNew() { 139de76a5adSDamjan Jovanovic boolean result = true ; 140de76a5adSDamjan Jovanovic 141de76a5adSDamjan Jovanovic oObj.loadModuleNew( 142de76a5adSDamjan Jovanovic new TransliterationModulesNew[] 143de76a5adSDamjan Jovanovic {TransliterationModulesNew.LOWERCASE_UPPERCASE}, loc); 144de76a5adSDamjan Jovanovic 145de76a5adSDamjan Jovanovic String name = oObj.getName(); 146de76a5adSDamjan Jovanovic result = name.equals("lower_to_upper(generic)"); 1472f709283SDamjan Jovanovic System.out.println("getName return: " + name); 148de76a5adSDamjan Jovanovic 1492f709283SDamjan Jovanovic Assert.assertTrue("loadModuleNew()", result); 150de76a5adSDamjan Jovanovic } 151de76a5adSDamjan Jovanovic 152de76a5adSDamjan Jovanovic /** 153de76a5adSDamjan Jovanovic * Calls the method for load LOWERCASE_UPPERCASE module and 154de76a5adSDamjan Jovanovic * checks the name returned by the method <code>getName</code>. <p> 155de76a5adSDamjan Jovanovic * Has <b>OK</b> status if the method <code>getName</code> returns the 156de76a5adSDamjan Jovanovic * string "lower_to_upper(generic)". 157de76a5adSDamjan Jovanovic */ 1582f709283SDamjan Jovanovic @Test _loadModuleByImplName()159de76a5adSDamjan Jovanovic public void _loadModuleByImplName() { 1602f709283SDamjan Jovanovic System.out.println("Load module LOWERCASE_UPPERCASE"); 161de76a5adSDamjan Jovanovic oObj.loadModuleByImplName("LOWERCASE_UPPERCASE", loc); 162de76a5adSDamjan Jovanovic 163de76a5adSDamjan Jovanovic String name = oObj.getName(); 164de76a5adSDamjan Jovanovic boolean res = name.equals("lower_to_upper(generic)"); 1652f709283SDamjan Jovanovic System.out.println("getName return: " + name); 166de76a5adSDamjan Jovanovic 1672f709283SDamjan Jovanovic Assert.assertTrue("loadModuleByImplName()", res); 168de76a5adSDamjan Jovanovic } 169de76a5adSDamjan Jovanovic 170de76a5adSDamjan Jovanovic /** 171de76a5adSDamjan Jovanovic * Calls the method for load UPPERCASE_LOWERCASE module and 172de76a5adSDamjan Jovanovic * checks the name returned by the method <code>getName</code>. <p> 173de76a5adSDamjan Jovanovic * Has <b>OK</b> status if the method <code>getName</code> returns the 174de76a5adSDamjan Jovanovic * string "upper_to_lower(generic)". 175de76a5adSDamjan Jovanovic */ 1762f709283SDamjan Jovanovic @Test _loadModulesByImplNames()177de76a5adSDamjan Jovanovic public void _loadModulesByImplNames() { 1782f709283SDamjan Jovanovic System.out.println("Load module UPPERCASE_LOWERCASE"); 179de76a5adSDamjan Jovanovic oObj.loadModulesByImplNames(new String[]{"UPPERCASE_LOWERCASE"}, loc); 180de76a5adSDamjan Jovanovic 181de76a5adSDamjan Jovanovic String name = oObj.getName(); 182de76a5adSDamjan Jovanovic boolean res = name.equals("upper_to_lower(generic)"); 1832f709283SDamjan Jovanovic System.out.println("getName return: " + name); 184de76a5adSDamjan Jovanovic 1852f709283SDamjan Jovanovic Assert.assertTrue("loadModulesByImplNames()", res); 186de76a5adSDamjan Jovanovic } 187de76a5adSDamjan Jovanovic 188de76a5adSDamjan Jovanovic /** 189de76a5adSDamjan Jovanovic * Loads <code>LOWERCASE_UPPERCASE</code> module and checks current type. 190de76a5adSDamjan Jovanovic * <p>Has <b>OK</b> status if the type is <code>ONE_TO_ONE</code> 191de76a5adSDamjan Jovanovic */ 1922f709283SDamjan Jovanovic @Test _getType()193de76a5adSDamjan Jovanovic public void _getType() { 194de76a5adSDamjan Jovanovic oObj.loadModule(TransliterationModules.LOWERCASE_UPPERCASE, loc); 195de76a5adSDamjan Jovanovic boolean result = oObj.getType() == TransliterationType.ONE_TO_ONE; 1962f709283SDamjan Jovanovic Assert.assertTrue("getType()", result); 197de76a5adSDamjan Jovanovic } 198de76a5adSDamjan Jovanovic 199de76a5adSDamjan Jovanovic /** 200de76a5adSDamjan Jovanovic * Loads UPPERCASE_LOWERCASE module and 201de76a5adSDamjan Jovanovic * checks the name returned by the method <code>getName</code>. <p> 202de76a5adSDamjan Jovanovic * 203de76a5adSDamjan Jovanovic * Has <b>OK</b> status if the method <code>getName</code> returns the 204de76a5adSDamjan Jovanovic * string "upper_to_lower(generic)". 205de76a5adSDamjan Jovanovic */ 2062f709283SDamjan Jovanovic @Test _getName()207de76a5adSDamjan Jovanovic public void _getName() { 208de76a5adSDamjan Jovanovic oObj.loadModule(TransliterationModules.LOWERCASE_UPPERCASE, loc); 209de76a5adSDamjan Jovanovic 210de76a5adSDamjan Jovanovic String name = oObj.getName(); 211de76a5adSDamjan Jovanovic boolean res = name.equals("lower_to_upper(generic)"); 2122f709283SDamjan Jovanovic System.out.println("getName return: " + name); 213de76a5adSDamjan Jovanovic 2142f709283SDamjan Jovanovic Assert.assertTrue("getName()", res); 215de76a5adSDamjan Jovanovic } 216de76a5adSDamjan Jovanovic 217de76a5adSDamjan Jovanovic /** 218de76a5adSDamjan Jovanovic * First loads <code>LOWERCASE_UPPERCASE</code> module. 219de76a5adSDamjan Jovanovic * Then tries to transliterate (make uppercase) a substring. <p> 220de76a5adSDamjan Jovanovic * Has <b>OK</b> status if all chars were made uppercase, 221de76a5adSDamjan Jovanovic * and array returned has size as substring length, and its 222de76a5adSDamjan Jovanovic * elements are positions of substring characters in the source 223de76a5adSDamjan Jovanovic * string. 224de76a5adSDamjan Jovanovic */ 2252f709283SDamjan Jovanovic @Test _transliterate()226de76a5adSDamjan Jovanovic public void _transliterate() { 227de76a5adSDamjan Jovanovic oObj.loadModule(TransliterationModules.LOWERCASE_UPPERCASE, loc); 228de76a5adSDamjan Jovanovic 229de76a5adSDamjan Jovanovic int[][] offs = new int[1][] ; 230de76a5adSDamjan Jovanovic 231de76a5adSDamjan Jovanovic String out = oObj.transliterate("AaBbCc", 1, 4, offs) ; 232de76a5adSDamjan Jovanovic 233de76a5adSDamjan Jovanovic boolean result = "ABBC".equals(out) && offs[0].length == 4 && 234de76a5adSDamjan Jovanovic offs[0][0] == 1 && 235de76a5adSDamjan Jovanovic offs[0][1] == 2 && 236de76a5adSDamjan Jovanovic offs[0][2] == 3 && 237de76a5adSDamjan Jovanovic offs[0][3] == 4 ; 238de76a5adSDamjan Jovanovic 2392f709283SDamjan Jovanovic Assert.assertTrue("transliterate()", result) ; 240de76a5adSDamjan Jovanovic } 241de76a5adSDamjan Jovanovic 242de76a5adSDamjan Jovanovic 243de76a5adSDamjan Jovanovic /** 244de76a5adSDamjan Jovanovic * First loads <code>LOWERCASE_UPPERCASE</code> module. 245de76a5adSDamjan Jovanovic * Tries to transliterate a range of two characters. <p> 246de76a5adSDamjan Jovanovic * Has <b>OK</b> status if the appropriate String array 247de76a5adSDamjan Jovanovic * returned (not null, length = 4, with two ranges 248de76a5adSDamjan Jovanovic * (a, i), (A, I) in any order). 249de76a5adSDamjan Jovanovic */ 2502f709283SDamjan Jovanovic @Test _transliterateRange()251de76a5adSDamjan Jovanovic public void _transliterateRange() { 252de76a5adSDamjan Jovanovic oObj.loadModule(TransliterationModules.IGNORE_CASE, loc); 253de76a5adSDamjan Jovanovic 254de76a5adSDamjan Jovanovic String[] out = oObj.transliterateRange("a", "i") ; 255de76a5adSDamjan Jovanovic 2562f709283SDamjan Jovanovic System.out.println("transliterateRange return:"); 257de76a5adSDamjan Jovanovic for(int i = 0; i < out.length; i++) { 2582f709283SDamjan Jovanovic System.out.println(out[i]); 259de76a5adSDamjan Jovanovic } 260de76a5adSDamjan Jovanovic 261de76a5adSDamjan Jovanovic boolean bOK = out != null && 262de76a5adSDamjan Jovanovic out.length == 4 && 263de76a5adSDamjan Jovanovic ("A".equals(out[0]) && "I".equals(out[1]) && 264de76a5adSDamjan Jovanovic "a".equals(out[2]) && "i".equals(out[3])) || 265de76a5adSDamjan Jovanovic ("a".equals(out[0]) && "i".equals(out[1]) && 266de76a5adSDamjan Jovanovic "A".equals(out[2]) && "I".equals(out[3])) ; 267de76a5adSDamjan Jovanovic 268de76a5adSDamjan Jovanovic if (!bOK) { 2692f709283SDamjan Jovanovic System.out.println("Unexpected range returned :"); 270de76a5adSDamjan Jovanovic for (int i = 0; i < out.length; i++) { 2712f709283SDamjan Jovanovic System.out.print("'" + out[i] +"', "); 272de76a5adSDamjan Jovanovic } 2732f709283SDamjan Jovanovic System.out.println(); 274de76a5adSDamjan Jovanovic } 275de76a5adSDamjan Jovanovic 2762f709283SDamjan Jovanovic Assert.assertTrue("transliterateRange()", bOK); 277de76a5adSDamjan Jovanovic } 278de76a5adSDamjan Jovanovic 279de76a5adSDamjan Jovanovic /** 280de76a5adSDamjan Jovanovic * This method is used internally by <code>equals</code> 281de76a5adSDamjan Jovanovic * method so it indirectly tested in this method. <p> 282de76a5adSDamjan Jovanovic * Always has <b>OK</b> status. 283de76a5adSDamjan Jovanovic */ 2842f709283SDamjan Jovanovic @Test _folding()285de76a5adSDamjan Jovanovic public void _folding() { 286de76a5adSDamjan Jovanovic oObj.loadModule(TransliterationModules.LOWERCASE_UPPERCASE, loc); 287de76a5adSDamjan Jovanovic 288de76a5adSDamjan Jovanovic int[][] offs = new int[1][] ; 289de76a5adSDamjan Jovanovic 290de76a5adSDamjan Jovanovic String out = oObj.folding("AaBbCc", 1, 4, offs) ; 291de76a5adSDamjan Jovanovic 292de76a5adSDamjan Jovanovic boolean result = "ABBC".equals(out) && offs[0].length == 4 && 293de76a5adSDamjan Jovanovic offs[0][0] == 1 && 294de76a5adSDamjan Jovanovic offs[0][1] == 2 && 295de76a5adSDamjan Jovanovic offs[0][2] == 3 && 296de76a5adSDamjan Jovanovic offs[0][3] == 4 ; 297de76a5adSDamjan Jovanovic 298de76a5adSDamjan Jovanovic 2992f709283SDamjan Jovanovic Assert.assertTrue("folding()", result) ; 300de76a5adSDamjan Jovanovic } 301de76a5adSDamjan Jovanovic 302de76a5adSDamjan Jovanovic 303de76a5adSDamjan Jovanovic /** 304de76a5adSDamjan Jovanovic * First loads <code>LOWERCASE_UPPERCASE</code> module. 305de76a5adSDamjan Jovanovic * Tries to compare two equal substrings. <p> 306de76a5adSDamjan Jovanovic * Has <b>OK</b> status if the method returned <code>true</code>. 307de76a5adSDamjan Jovanovic */ 3082f709283SDamjan Jovanovic @Test _equals()309de76a5adSDamjan Jovanovic public void _equals() { 310de76a5adSDamjan Jovanovic oObj.loadModule(TransliterationModules.LOWERCASE_UPPERCASE, loc); 311de76a5adSDamjan Jovanovic 312de76a5adSDamjan Jovanovic int[] match1 = new int[1], 313de76a5adSDamjan Jovanovic match2 = new int[1] ; 314de76a5adSDamjan Jovanovic 315de76a5adSDamjan Jovanovic boolean res = oObj.equals("aAbBcC", 1, 3, match1, "aAbBcC", 1, 316de76a5adSDamjan Jovanovic 3, match2) ; 317de76a5adSDamjan Jovanovic 3182f709283SDamjan Jovanovic System.out.println("Returned : " + res + " Match1 = " + match1[0] + 319de76a5adSDamjan Jovanovic " Match2 = " + match2[0]) ; 320de76a5adSDamjan Jovanovic 3212f709283SDamjan Jovanovic Assert.assertTrue("equals()", res) ; 322de76a5adSDamjan Jovanovic } 323de76a5adSDamjan Jovanovic 324de76a5adSDamjan Jovanovic /** 325de76a5adSDamjan Jovanovic * Test performed for sets of equal substrings, not equal 326de76a5adSDamjan Jovanovic * substrings, and with out of bounds offset and length 327de76a5adSDamjan Jovanovic * parameters.<p> 328de76a5adSDamjan Jovanovic * 329de76a5adSDamjan Jovanovic * Has <b>OK</b> status if comparings of equal substrings 330de76a5adSDamjan Jovanovic * always return 0, if comparisons of none equal returns 331de76a5adSDamjan Jovanovic * proper value according to lexicographical order and if 332de76a5adSDamjan Jovanovic * comparisons with invalid parameters return none 0 value. 333de76a5adSDamjan Jovanovic */ 3342f709283SDamjan Jovanovic @Test _compareSubstring()335de76a5adSDamjan Jovanovic public void _compareSubstring() { 336de76a5adSDamjan Jovanovic oObj.loadModule(TransliterationModules.LOWERCASE_UPPERCASE, loc); 337de76a5adSDamjan Jovanovic boolean result = true ; 338de76a5adSDamjan Jovanovic 339de76a5adSDamjan Jovanovic // substrings below must be equal 340de76a5adSDamjan Jovanovic result &= testSubstring("", 0, 0, "", 0, 0, 0) ; 341de76a5adSDamjan Jovanovic result &= testSubstring("aa", 1, 0, "", 0, 0, 0) ; 342de76a5adSDamjan Jovanovic result &= testSubstring("aa", 1, 0, "aa", 2, 0, 0) ; 343de76a5adSDamjan Jovanovic result &= testSubstring("a", 0, 1, "a", 0, 1, 0) ; 344de76a5adSDamjan Jovanovic result &= testSubstring("ab", 0, 2, "ab", 0, 2, 0) ; 345de76a5adSDamjan Jovanovic result &= testSubstring("abc", 1, 2, "abc", 1, 2, 0) ; 346de76a5adSDamjan Jovanovic result &= testSubstring("abcdef", 0, 3, "123abc", 3, 3, 0) ; 347de76a5adSDamjan Jovanovic result &= testSubstring("abcdef", 1, 1, "123abc", 4, 1, 0) ; 348de76a5adSDamjan Jovanovic 349de76a5adSDamjan Jovanovic // substrings below must NOT be equal 350de76a5adSDamjan Jovanovic result &= testSubstring("a", 0, 1, "a", 0, 0, 1) ; 351de76a5adSDamjan Jovanovic result &= testSubstring("aaa", 1, 1, "", 0, 0, 1) ; 352de76a5adSDamjan Jovanovic result &= testSubstring("bbb", 2, 1, "aaa", 2, 1, 1) ; 353de76a5adSDamjan Jovanovic result &= testSubstring("abc", 0, 3, "abc", 0, 2, 1) ; 354de76a5adSDamjan Jovanovic result &= testSubstring("bbc", 1, 2, "bbc", 0, 2, 1) ; 355de76a5adSDamjan Jovanovic 356de76a5adSDamjan Jovanovic // testing with wrong offsets and lengths 357de76a5adSDamjan Jovanovic 3582f709283SDamjan Jovanovic Assert.assertTrue("compareSubstring()", result) ; 359de76a5adSDamjan Jovanovic } 360de76a5adSDamjan Jovanovic 361de76a5adSDamjan Jovanovic /** 362de76a5adSDamjan Jovanovic * Performs tesing of two substrings. Also testing of opposite 363de76a5adSDamjan Jovanovic * substrings order performed. 364*efd61a20SJohn Bampton * @return <code>true</code> if substrings are equal and returned 365de76a5adSDamjan Jovanovic * value is 0 for both orders, 366de76a5adSDamjan Jovanovic * if substrings are different and expected value 367de76a5adSDamjan Jovanovic * returned for direct order and opposite value returned for 368de76a5adSDamjan Jovanovic * opposite order. 369de76a5adSDamjan Jovanovic */ testSubstring(String str1, int p1, int len1, String str2, int p2, int len2, int expRes)370de76a5adSDamjan Jovanovic private boolean testSubstring(String str1, int p1, int len1, 371de76a5adSDamjan Jovanovic String str2, int p2, int len2, int expRes) { 372de76a5adSDamjan Jovanovic 373de76a5adSDamjan Jovanovic boolean ret = true ; 374de76a5adSDamjan Jovanovic 375de76a5adSDamjan Jovanovic int res = -666 ; 376de76a5adSDamjan Jovanovic try { 377de76a5adSDamjan Jovanovic res = oObj.compareSubstring(str1, p1, len1, str2, p2, len2); 378de76a5adSDamjan Jovanovic } catch (java.lang.NullPointerException e) { 3792f709283SDamjan Jovanovic System.out.println("Exception while method calling occurs :" + e); 380de76a5adSDamjan Jovanovic } 381de76a5adSDamjan Jovanovic 382de76a5adSDamjan Jovanovic if (res != expRes) { 3832f709283SDamjan Jovanovic System.out.print("Comparing FAILED; return: " + res + ", expected: " + 384de76a5adSDamjan Jovanovic expRes + " "); 385de76a5adSDamjan Jovanovic ret = false ; 386de76a5adSDamjan Jovanovic } else { 3872f709283SDamjan Jovanovic System.out.print("Comparing OK : "); 388de76a5adSDamjan Jovanovic } 3892f709283SDamjan Jovanovic System.out.println("('" + str1 + "', " + p1 + ", " + len1 + ", '" + 390de76a5adSDamjan Jovanovic str2 + "', " + p2 + ", " + len2 + ")"); 391de76a5adSDamjan Jovanovic 392de76a5adSDamjan Jovanovic res = -666 ; 393de76a5adSDamjan Jovanovic try { 394de76a5adSDamjan Jovanovic res = oObj.compareSubstring(str2, p2, len2, str1, p1, len1); 395de76a5adSDamjan Jovanovic } catch (java.lang.NullPointerException e) { 3962f709283SDamjan Jovanovic System.out.println("Exception while method calling occurs :" + e); 397de76a5adSDamjan Jovanovic } 398de76a5adSDamjan Jovanovic 399de76a5adSDamjan Jovanovic if (res != -expRes) { 4002f709283SDamjan Jovanovic System.out.print("Comparing FAILED; return: " + res + ", expected: " + 401de76a5adSDamjan Jovanovic -expRes + " "); 402de76a5adSDamjan Jovanovic ret = false ; 403de76a5adSDamjan Jovanovic } else { 4042f709283SDamjan Jovanovic System.out.print("Comparing OK :"); 405de76a5adSDamjan Jovanovic } 4062f709283SDamjan Jovanovic System.out.println("('" + str2 + "', " + p2 + ", " + len2 + ", '" + 407de76a5adSDamjan Jovanovic str1 + "', " + p1 + ", " + len1 + ")"); 408de76a5adSDamjan Jovanovic 409de76a5adSDamjan Jovanovic return ret ; 410de76a5adSDamjan Jovanovic } 411de76a5adSDamjan Jovanovic 412de76a5adSDamjan Jovanovic /** 413de76a5adSDamjan Jovanovic * Test performed for sets of equal strings and not equal 414de76a5adSDamjan Jovanovic * strings.<p> 415de76a5adSDamjan Jovanovic * 416de76a5adSDamjan Jovanovic * Has <b>OK</b> status if comparings of equal strings 417de76a5adSDamjan Jovanovic * always return 0 and if comparisons of none equal returns 418de76a5adSDamjan Jovanovic * proper value according to lexicographical order . 419de76a5adSDamjan Jovanovic */ 4202f709283SDamjan Jovanovic @Test _compareString()421de76a5adSDamjan Jovanovic public void _compareString() { 422de76a5adSDamjan Jovanovic oObj.loadModule(TransliterationModules.LOWERCASE_UPPERCASE, loc); 423de76a5adSDamjan Jovanovic boolean result = true ; 424de76a5adSDamjan Jovanovic 425de76a5adSDamjan Jovanovic result &= testString("", "", 0) ; 426de76a5adSDamjan Jovanovic result &= testString("a", "", 1) ; 427de76a5adSDamjan Jovanovic result &= testString("a", "a", 0) ; 428de76a5adSDamjan Jovanovic result &= testString("A", "a", 0) ; 429de76a5adSDamjan Jovanovic result &= testString("b", "a", 1) ; 430de76a5adSDamjan Jovanovic result &= testString("\n", "\n", 0) ; 431de76a5adSDamjan Jovanovic result &= testString("\n", "\t", 1) ; 432de76a5adSDamjan Jovanovic result &= testString("aaa", "aaa", 0) ; 433de76a5adSDamjan Jovanovic result &= testString("aaA", "aaa", 0) ; 434de76a5adSDamjan Jovanovic result &= testString("aaa", "aa", 1) ; 435de76a5adSDamjan Jovanovic result &= testString("ab", "aaa", 1) ; 436de76a5adSDamjan Jovanovic result &= testString("aba", "aa", 1) ; 437de76a5adSDamjan Jovanovic result &= testString("aaa\t\na", "aaa\t\na", 0) ; 438de76a5adSDamjan Jovanovic result &= testString("aaa\t\nb", "aaa\t\na", 1) ; 439de76a5adSDamjan Jovanovic 4402f709283SDamjan Jovanovic Assert.assertTrue("compareString()", result) ; 441de76a5adSDamjan Jovanovic } 442de76a5adSDamjan Jovanovic 443de76a5adSDamjan Jovanovic /** 444de76a5adSDamjan Jovanovic * Performs tesing of two strings. If the expected value is not 0 445de76a5adSDamjan Jovanovic * (i.e. strings are not equal), then also testing of opposite 446de76a5adSDamjan Jovanovic * strings order performed. 447*efd61a20SJohn Bampton * @return <code>true</code> if strings are equal and returned 448de76a5adSDamjan Jovanovic * value is 0, if strings are different and expected value 449de76a5adSDamjan Jovanovic * returned for direct order and opposite value returned for 450de76a5adSDamjan Jovanovic * opposite order. 451de76a5adSDamjan Jovanovic */ testString(String str1, String str2, int expRes)452de76a5adSDamjan Jovanovic protected boolean testString(String str1, String str2, int expRes) { 453de76a5adSDamjan Jovanovic if (expRes == 0) return testString(str1, str2, expRes, false) ; 454de76a5adSDamjan Jovanovic return testString(str1, str2, expRes, true) ; 455de76a5adSDamjan Jovanovic } 456de76a5adSDamjan Jovanovic testString(String str1, String str2, int expRes, boolean testReverse)457de76a5adSDamjan Jovanovic private boolean testString(String str1, String str2, int expRes, 458de76a5adSDamjan Jovanovic boolean testReverse) { 459de76a5adSDamjan Jovanovic 460de76a5adSDamjan Jovanovic boolean ret = true ; 461de76a5adSDamjan Jovanovic 462de76a5adSDamjan Jovanovic int res = -666 ; 463de76a5adSDamjan Jovanovic try { 464de76a5adSDamjan Jovanovic res = oObj.compareString(str1, str2); 465de76a5adSDamjan Jovanovic } catch (java.lang.NullPointerException e) { 4662f709283SDamjan Jovanovic System.out.println("Exception while method calling occurs :" + e); 467de76a5adSDamjan Jovanovic } 468de76a5adSDamjan Jovanovic 469de76a5adSDamjan Jovanovic if (res == expRes) { 4702f709283SDamjan Jovanovic System.out.println("Comparing of '" + str1 + "' and '" + str2 + "' OK" ); 471de76a5adSDamjan Jovanovic } else { 4722f709283SDamjan Jovanovic System.out.println("Comparing of '" + str1 + "' and '" + str2 + 473de76a5adSDamjan Jovanovic "' FAILED; return: " + res + ", expected: " + expRes); 474de76a5adSDamjan Jovanovic ret = false ; 475de76a5adSDamjan Jovanovic } 476de76a5adSDamjan Jovanovic 477de76a5adSDamjan Jovanovic if (!testReverse) return ret ; 478de76a5adSDamjan Jovanovic 479de76a5adSDamjan Jovanovic res = -666 ; 480de76a5adSDamjan Jovanovic try { 481de76a5adSDamjan Jovanovic res = oObj.compareString(str2, str1); 482de76a5adSDamjan Jovanovic } catch (java.lang.NullPointerException e) { 4832f709283SDamjan Jovanovic System.out.println("Exception while method calling occurs :" + e); 484de76a5adSDamjan Jovanovic } 485de76a5adSDamjan Jovanovic 486de76a5adSDamjan Jovanovic if (res == -expRes) { 4872f709283SDamjan Jovanovic System.out.println("Comparing of '" + str2 + "' and '" + str1 + "' OK" ); 488de76a5adSDamjan Jovanovic } else { 4892f709283SDamjan Jovanovic System.out.println("Comparing of '" + str2 + "' and '" + str1 + 490de76a5adSDamjan Jovanovic "' FAILED; return: " + res + ", expected: " + -expRes); 491de76a5adSDamjan Jovanovic ret = false ; 492de76a5adSDamjan Jovanovic } 493de76a5adSDamjan Jovanovic 494de76a5adSDamjan Jovanovic return ret ; 495de76a5adSDamjan Jovanovic } 496de76a5adSDamjan Jovanovic } 497