1*de76a5adSDamjan Jovanovic /************************************************************** 2*de76a5adSDamjan Jovanovic * 3*de76a5adSDamjan Jovanovic * Licensed to the Apache Software Foundation (ASF) under one 4*de76a5adSDamjan Jovanovic * or more contributor license agreements. See the NOTICE file 5*de76a5adSDamjan Jovanovic * distributed with this work for additional information 6*de76a5adSDamjan Jovanovic * regarding copyright ownership. The ASF licenses this file 7*de76a5adSDamjan Jovanovic * to you under the Apache License, Version 2.0 (the 8*de76a5adSDamjan Jovanovic * "License"); you may not use this file except in compliance 9*de76a5adSDamjan Jovanovic * with the License. You may obtain a copy of the License at 10*de76a5adSDamjan Jovanovic * 11*de76a5adSDamjan Jovanovic * http://www.apache.org/licenses/LICENSE-2.0 12*de76a5adSDamjan Jovanovic * 13*de76a5adSDamjan Jovanovic * Unless required by applicable law or agreed to in writing, 14*de76a5adSDamjan Jovanovic * software distributed under the License is distributed on an 15*de76a5adSDamjan Jovanovic * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*de76a5adSDamjan Jovanovic * KIND, either express or implied. See the License for the 17*de76a5adSDamjan Jovanovic * specific language governing permissions and limitations 18*de76a5adSDamjan Jovanovic * under the License. 19*de76a5adSDamjan Jovanovic * 20*de76a5adSDamjan Jovanovic *************************************************************/ 21*de76a5adSDamjan Jovanovic 22*de76a5adSDamjan Jovanovic 23*de76a5adSDamjan Jovanovic 24*de76a5adSDamjan Jovanovic package ifc.i18n; 25*de76a5adSDamjan Jovanovic 26*de76a5adSDamjan Jovanovic import lib.MultiMethodTest; 27*de76a5adSDamjan Jovanovic 28*de76a5adSDamjan Jovanovic import com.sun.star.i18n.TransliterationModules; 29*de76a5adSDamjan Jovanovic import com.sun.star.i18n.TransliterationModulesNew; 30*de76a5adSDamjan Jovanovic import com.sun.star.i18n.TransliterationType; 31*de76a5adSDamjan Jovanovic import com.sun.star.i18n.XTransliteration; 32*de76a5adSDamjan Jovanovic import com.sun.star.lang.Locale; 33*de76a5adSDamjan Jovanovic 34*de76a5adSDamjan Jovanovic /** 35*de76a5adSDamjan Jovanovic * Testing <code>com.sun.star.i18n.XTransliteration</code> 36*de76a5adSDamjan Jovanovic * interface methods : 37*de76a5adSDamjan Jovanovic * <ul> 38*de76a5adSDamjan Jovanovic * <li><code> getName()</code></li> 39*de76a5adSDamjan Jovanovic * <li><code> getType()</code></li> 40*de76a5adSDamjan Jovanovic * <li><code> loadModule()</code></li> 41*de76a5adSDamjan Jovanovic * <li><code> loadModuleNew()</code></li> 42*de76a5adSDamjan Jovanovic * <li><code> loadModuleByImplName()</code></li> 43*de76a5adSDamjan Jovanovic * <li><code> loadModulesByImplNames()</code></li> 44*de76a5adSDamjan Jovanovic * <li><code> getAvailableModules()</code></li> 45*de76a5adSDamjan Jovanovic * <li><code> transliterate()</code></li> 46*de76a5adSDamjan Jovanovic * <li><code> folding()</code></li> 47*de76a5adSDamjan Jovanovic * <li><code> equals()</code></li> 48*de76a5adSDamjan Jovanovic * <li><code> transliterateRange()</code></li> 49*de76a5adSDamjan Jovanovic * </ul> <p> 50*de76a5adSDamjan Jovanovic * Test is <b> NOT </b> multithread compliant. <p> 51*de76a5adSDamjan Jovanovic * @see com.sun.star.i18n.XTransliteration 52*de76a5adSDamjan Jovanovic */ 53*de76a5adSDamjan Jovanovic public class _XTransliteration extends MultiMethodTest { 54*de76a5adSDamjan Jovanovic 55*de76a5adSDamjan Jovanovic public XTransliteration oObj = null; 56*de76a5adSDamjan Jovanovic private String[] mod = null ; 57*de76a5adSDamjan Jovanovic private Locale loc = new Locale("en", "EN", "") ; 58*de76a5adSDamjan Jovanovic 59*de76a5adSDamjan Jovanovic /** 60*de76a5adSDamjan Jovanovic * Gets all available transliteration modules. <p> 61*de76a5adSDamjan Jovanovic * Has <b>OK</b> status if array returned has at least 62*de76a5adSDamjan Jovanovic * one module name. 63*de76a5adSDamjan Jovanovic */ 64*de76a5adSDamjan Jovanovic public void _getAvailableModules() { 65*de76a5adSDamjan Jovanovic mod = oObj.getAvailableModules(loc, TransliterationType.ONE_TO_ONE); 66*de76a5adSDamjan Jovanovic 67*de76a5adSDamjan Jovanovic if (mod != null) { 68*de76a5adSDamjan Jovanovic log.println("Available modules :") ; 69*de76a5adSDamjan Jovanovic for (int i = 0; i < mod.length; i++) { 70*de76a5adSDamjan Jovanovic log.println(" '" + mod[i] + "'") ; 71*de76a5adSDamjan Jovanovic } 72*de76a5adSDamjan Jovanovic } else { 73*de76a5adSDamjan Jovanovic log.println("!!! NULL returned !!!") ; 74*de76a5adSDamjan Jovanovic } 75*de76a5adSDamjan Jovanovic 76*de76a5adSDamjan Jovanovic tRes.tested("getAvailableModules()", mod != null && mod.length > 0) ; 77*de76a5adSDamjan Jovanovic } 78*de76a5adSDamjan Jovanovic 79*de76a5adSDamjan Jovanovic /** 80*de76a5adSDamjan Jovanovic * Calls the method for load IGNORE_CASE module and checks the name returned 81*de76a5adSDamjan Jovanovic * by the method <code>getName</code>. <p> 82*de76a5adSDamjan Jovanovic * Has <b>OK</b> status if the method <code>getName</code> returns the 83*de76a5adSDamjan Jovanovic * string "case ignore (generic)". 84*de76a5adSDamjan Jovanovic */ 85*de76a5adSDamjan Jovanovic public void _loadModule() { 86*de76a5adSDamjan Jovanovic log.println("Load module IGNORE_CASE"); 87*de76a5adSDamjan Jovanovic oObj.loadModule(TransliterationModules.IGNORE_CASE, loc); 88*de76a5adSDamjan Jovanovic 89*de76a5adSDamjan Jovanovic String name = oObj.getName(); 90*de76a5adSDamjan Jovanovic boolean res = name.equals("case ignore (generic)"); 91*de76a5adSDamjan Jovanovic log.println("getName return: " + name); 92*de76a5adSDamjan Jovanovic 93*de76a5adSDamjan Jovanovic tRes.tested("loadModule()", res ); 94*de76a5adSDamjan Jovanovic } 95*de76a5adSDamjan Jovanovic 96*de76a5adSDamjan Jovanovic /** 97*de76a5adSDamjan Jovanovic * Loads <code>LOWERCASE_UPPERCASE</code> module and checks the current 98*de76a5adSDamjan Jovanovic * name of object. <p> 99*de76a5adSDamjan Jovanovic * 100*de76a5adSDamjan Jovanovic * Has <b>OK</b> status if the name of the object is equals to 101*de76a5adSDamjan Jovanovic * 'lower_to_upper(generic)' 102*de76a5adSDamjan Jovanovic */ 103*de76a5adSDamjan Jovanovic public void _loadModuleNew() { 104*de76a5adSDamjan Jovanovic boolean result = true ; 105*de76a5adSDamjan Jovanovic 106*de76a5adSDamjan Jovanovic oObj.loadModuleNew( 107*de76a5adSDamjan Jovanovic new TransliterationModulesNew[] 108*de76a5adSDamjan Jovanovic {TransliterationModulesNew.LOWERCASE_UPPERCASE}, loc); 109*de76a5adSDamjan Jovanovic 110*de76a5adSDamjan Jovanovic String name = oObj.getName(); 111*de76a5adSDamjan Jovanovic result = name.equals("lower_to_upper(generic)"); 112*de76a5adSDamjan Jovanovic log.println("getName return: " + name); 113*de76a5adSDamjan Jovanovic 114*de76a5adSDamjan Jovanovic tRes.tested("loadModuleNew()", result); 115*de76a5adSDamjan Jovanovic } 116*de76a5adSDamjan Jovanovic 117*de76a5adSDamjan Jovanovic /** 118*de76a5adSDamjan Jovanovic * Calls the method for load LOWERCASE_UPPERCASE module and 119*de76a5adSDamjan Jovanovic * checks the name returned by the method <code>getName</code>. <p> 120*de76a5adSDamjan Jovanovic * Has <b>OK</b> status if the method <code>getName</code> returns the 121*de76a5adSDamjan Jovanovic * string "lower_to_upper(generic)". 122*de76a5adSDamjan Jovanovic */ 123*de76a5adSDamjan Jovanovic public void _loadModuleByImplName() { 124*de76a5adSDamjan Jovanovic log.println("Load module LOWERCASE_UPPERCASE"); 125*de76a5adSDamjan Jovanovic oObj.loadModuleByImplName("LOWERCASE_UPPERCASE", loc); 126*de76a5adSDamjan Jovanovic 127*de76a5adSDamjan Jovanovic String name = oObj.getName(); 128*de76a5adSDamjan Jovanovic boolean res = name.equals("lower_to_upper(generic)"); 129*de76a5adSDamjan Jovanovic log.println("getName return: " + name); 130*de76a5adSDamjan Jovanovic 131*de76a5adSDamjan Jovanovic tRes.tested("loadModuleByImplName()", res); 132*de76a5adSDamjan Jovanovic } 133*de76a5adSDamjan Jovanovic 134*de76a5adSDamjan Jovanovic /** 135*de76a5adSDamjan Jovanovic * Calls the method for load UPPERCASE_LOWERCASE module and 136*de76a5adSDamjan Jovanovic * checks the name returned by the method <code>getName</code>. <p> 137*de76a5adSDamjan Jovanovic * Has <b>OK</b> status if the method <code>getName</code> returns the 138*de76a5adSDamjan Jovanovic * string "upper_to_lower(generic)". 139*de76a5adSDamjan Jovanovic */ 140*de76a5adSDamjan Jovanovic public void _loadModulesByImplNames() { 141*de76a5adSDamjan Jovanovic log.println("Load module UPPERCASE_LOWERCASE"); 142*de76a5adSDamjan Jovanovic oObj.loadModulesByImplNames(new String[]{"UPPERCASE_LOWERCASE"}, loc); 143*de76a5adSDamjan Jovanovic 144*de76a5adSDamjan Jovanovic String name = oObj.getName(); 145*de76a5adSDamjan Jovanovic boolean res = name.equals("upper_to_lower(generic)"); 146*de76a5adSDamjan Jovanovic log.println("getName return: " + name); 147*de76a5adSDamjan Jovanovic 148*de76a5adSDamjan Jovanovic tRes.tested("loadModulesByImplNames()", res); 149*de76a5adSDamjan Jovanovic } 150*de76a5adSDamjan Jovanovic 151*de76a5adSDamjan Jovanovic /** 152*de76a5adSDamjan Jovanovic * Loads <code>LOWERCASE_UPPERCASE</code> module and checks current type. 153*de76a5adSDamjan Jovanovic * <p>Has <b>OK</b> status if the type is <code>ONE_TO_ONE</code> 154*de76a5adSDamjan Jovanovic */ 155*de76a5adSDamjan Jovanovic public void _getType() { 156*de76a5adSDamjan Jovanovic oObj.loadModule(TransliterationModules.LOWERCASE_UPPERCASE, loc); 157*de76a5adSDamjan Jovanovic boolean result = oObj.getType() == TransliterationType.ONE_TO_ONE; 158*de76a5adSDamjan Jovanovic tRes.tested("getType()", result); 159*de76a5adSDamjan Jovanovic } 160*de76a5adSDamjan Jovanovic 161*de76a5adSDamjan Jovanovic /** 162*de76a5adSDamjan Jovanovic * Loads UPPERCASE_LOWERCASE module and 163*de76a5adSDamjan Jovanovic * checks the name returned by the method <code>getName</code>. <p> 164*de76a5adSDamjan Jovanovic * 165*de76a5adSDamjan Jovanovic * Has <b>OK</b> status if the method <code>getName</code> returns the 166*de76a5adSDamjan Jovanovic * string "upper_to_lower(generic)". 167*de76a5adSDamjan Jovanovic */ 168*de76a5adSDamjan Jovanovic public void _getName() { 169*de76a5adSDamjan Jovanovic oObj.loadModule(TransliterationModules.LOWERCASE_UPPERCASE, loc); 170*de76a5adSDamjan Jovanovic 171*de76a5adSDamjan Jovanovic String name = oObj.getName(); 172*de76a5adSDamjan Jovanovic boolean res = name.equals("lower_to_upper(generic)"); 173*de76a5adSDamjan Jovanovic log.println("getName return: " + name); 174*de76a5adSDamjan Jovanovic 175*de76a5adSDamjan Jovanovic tRes.tested("getName()", res); 176*de76a5adSDamjan Jovanovic } 177*de76a5adSDamjan Jovanovic 178*de76a5adSDamjan Jovanovic /** 179*de76a5adSDamjan Jovanovic * First loads <code>LOWERCASE_UPPERCASE</code> module. 180*de76a5adSDamjan Jovanovic * Then tries to transliterate (make uppercase) a substring. <p> 181*de76a5adSDamjan Jovanovic * Has <b>OK</b> status if all chars were made uppercase, 182*de76a5adSDamjan Jovanovic * and array returned has size as substring length, and its 183*de76a5adSDamjan Jovanovic * elements are positions of substring characters in the source 184*de76a5adSDamjan Jovanovic * string. 185*de76a5adSDamjan Jovanovic */ 186*de76a5adSDamjan Jovanovic public void _transliterate() { 187*de76a5adSDamjan Jovanovic oObj.loadModule(TransliterationModules.LOWERCASE_UPPERCASE, loc); 188*de76a5adSDamjan Jovanovic 189*de76a5adSDamjan Jovanovic int[][] offs = new int[1][] ; 190*de76a5adSDamjan Jovanovic 191*de76a5adSDamjan Jovanovic String out = oObj.transliterate("AaBbCc", 1, 4, offs) ; 192*de76a5adSDamjan Jovanovic 193*de76a5adSDamjan Jovanovic boolean result = "ABBC".equals(out) && offs[0].length == 4 && 194*de76a5adSDamjan Jovanovic offs[0][0] == 1 && 195*de76a5adSDamjan Jovanovic offs[0][1] == 2 && 196*de76a5adSDamjan Jovanovic offs[0][2] == 3 && 197*de76a5adSDamjan Jovanovic offs[0][3] == 4 ; 198*de76a5adSDamjan Jovanovic 199*de76a5adSDamjan Jovanovic tRes.tested("transliterate()", result) ; 200*de76a5adSDamjan Jovanovic } 201*de76a5adSDamjan Jovanovic 202*de76a5adSDamjan Jovanovic 203*de76a5adSDamjan Jovanovic /** 204*de76a5adSDamjan Jovanovic * First loads <code>LOWERCASE_UPPERCASE</code> module. 205*de76a5adSDamjan Jovanovic * Tries to transliterate a range of two characters. <p> 206*de76a5adSDamjan Jovanovic * Has <b>OK</b> status if the appropriate String array 207*de76a5adSDamjan Jovanovic * returned (not null, length = 4, with two ranges 208*de76a5adSDamjan Jovanovic * (a, i), (A, I) in any order). 209*de76a5adSDamjan Jovanovic */ 210*de76a5adSDamjan Jovanovic public void _transliterateRange() { 211*de76a5adSDamjan Jovanovic oObj.loadModule(TransliterationModules.IGNORE_CASE, loc); 212*de76a5adSDamjan Jovanovic 213*de76a5adSDamjan Jovanovic String[] out = oObj.transliterateRange("a", "i") ; 214*de76a5adSDamjan Jovanovic 215*de76a5adSDamjan Jovanovic log.println("transliterateRange return:"); 216*de76a5adSDamjan Jovanovic for(int i = 0; i < out.length; i++) { 217*de76a5adSDamjan Jovanovic log.println(out[i]); 218*de76a5adSDamjan Jovanovic } 219*de76a5adSDamjan Jovanovic 220*de76a5adSDamjan Jovanovic boolean bOK = out != null && 221*de76a5adSDamjan Jovanovic out.length == 4 && 222*de76a5adSDamjan Jovanovic ("A".equals(out[0]) && "I".equals(out[1]) && 223*de76a5adSDamjan Jovanovic "a".equals(out[2]) && "i".equals(out[3])) || 224*de76a5adSDamjan Jovanovic ("a".equals(out[0]) && "i".equals(out[1]) && 225*de76a5adSDamjan Jovanovic "A".equals(out[2]) && "I".equals(out[3])) ; 226*de76a5adSDamjan Jovanovic 227*de76a5adSDamjan Jovanovic if (!bOK) { 228*de76a5adSDamjan Jovanovic log.println("Unexpected range returned :"); 229*de76a5adSDamjan Jovanovic for (int i = 0; i < out.length; i++) { 230*de76a5adSDamjan Jovanovic log.print("'" + out[i] +"', "); 231*de76a5adSDamjan Jovanovic } 232*de76a5adSDamjan Jovanovic log.println(); 233*de76a5adSDamjan Jovanovic } 234*de76a5adSDamjan Jovanovic 235*de76a5adSDamjan Jovanovic tRes.tested("transliterateRange()", bOK); 236*de76a5adSDamjan Jovanovic } 237*de76a5adSDamjan Jovanovic 238*de76a5adSDamjan Jovanovic /** 239*de76a5adSDamjan Jovanovic * This method is used internally by <code>equals</code> 240*de76a5adSDamjan Jovanovic * method so it indirectly tested in this method. <p> 241*de76a5adSDamjan Jovanovic * Always has <b>OK</b> status. 242*de76a5adSDamjan Jovanovic */ 243*de76a5adSDamjan Jovanovic public void _folding() { 244*de76a5adSDamjan Jovanovic oObj.loadModule(TransliterationModules.LOWERCASE_UPPERCASE, loc); 245*de76a5adSDamjan Jovanovic 246*de76a5adSDamjan Jovanovic int[][] offs = new int[1][] ; 247*de76a5adSDamjan Jovanovic 248*de76a5adSDamjan Jovanovic String out = oObj.folding("AaBbCc", 1, 4, offs) ; 249*de76a5adSDamjan Jovanovic 250*de76a5adSDamjan Jovanovic boolean result = "ABBC".equals(out) && offs[0].length == 4 && 251*de76a5adSDamjan Jovanovic offs[0][0] == 1 && 252*de76a5adSDamjan Jovanovic offs[0][1] == 2 && 253*de76a5adSDamjan Jovanovic offs[0][2] == 3 && 254*de76a5adSDamjan Jovanovic offs[0][3] == 4 ; 255*de76a5adSDamjan Jovanovic 256*de76a5adSDamjan Jovanovic 257*de76a5adSDamjan Jovanovic tRes.tested("folding()", result) ; 258*de76a5adSDamjan Jovanovic } 259*de76a5adSDamjan Jovanovic 260*de76a5adSDamjan Jovanovic 261*de76a5adSDamjan Jovanovic /** 262*de76a5adSDamjan Jovanovic * First loads <code>LOWERCASE_UPPERCASE</code> module. 263*de76a5adSDamjan Jovanovic * Tries to compare two equal substrings. <p> 264*de76a5adSDamjan Jovanovic * Has <b>OK</b> status if the method returned <code>true</code>. 265*de76a5adSDamjan Jovanovic */ 266*de76a5adSDamjan Jovanovic public void _equals() { 267*de76a5adSDamjan Jovanovic oObj.loadModule(TransliterationModules.LOWERCASE_UPPERCASE, loc); 268*de76a5adSDamjan Jovanovic 269*de76a5adSDamjan Jovanovic int[] match1 = new int[1], 270*de76a5adSDamjan Jovanovic match2 = new int[1] ; 271*de76a5adSDamjan Jovanovic 272*de76a5adSDamjan Jovanovic boolean res = oObj.equals("aAbBcC", 1, 3, match1, "aAbBcC", 1, 273*de76a5adSDamjan Jovanovic 3, match2) ; 274*de76a5adSDamjan Jovanovic 275*de76a5adSDamjan Jovanovic log.println("Returned : " + res + " Match1 = " + match1[0] + 276*de76a5adSDamjan Jovanovic " Match2 = " + match2[0]) ; 277*de76a5adSDamjan Jovanovic 278*de76a5adSDamjan Jovanovic tRes.tested("equals()", res) ; 279*de76a5adSDamjan Jovanovic } 280*de76a5adSDamjan Jovanovic 281*de76a5adSDamjan Jovanovic /** 282*de76a5adSDamjan Jovanovic * Test performed for sets of equal substrings, not equal 283*de76a5adSDamjan Jovanovic * substrings, and with out of bounds offset and length 284*de76a5adSDamjan Jovanovic * parameters.<p> 285*de76a5adSDamjan Jovanovic * 286*de76a5adSDamjan Jovanovic * Has <b>OK</b> status if comparings of equal substrings 287*de76a5adSDamjan Jovanovic * always return 0, if comparisons of none equal returns 288*de76a5adSDamjan Jovanovic * proper value according to lexicographical order and if 289*de76a5adSDamjan Jovanovic * comparisons with invalid parameters return none 0 value. 290*de76a5adSDamjan Jovanovic */ 291*de76a5adSDamjan Jovanovic public void _compareSubstring() { 292*de76a5adSDamjan Jovanovic oObj.loadModule(TransliterationModules.LOWERCASE_UPPERCASE, loc); 293*de76a5adSDamjan Jovanovic boolean result = true ; 294*de76a5adSDamjan Jovanovic 295*de76a5adSDamjan Jovanovic // substrings below must be equal 296*de76a5adSDamjan Jovanovic result &= testSubstring("", 0, 0, "", 0, 0, 0) ; 297*de76a5adSDamjan Jovanovic result &= testSubstring("aa", 1, 0, "", 0, 0, 0) ; 298*de76a5adSDamjan Jovanovic result &= testSubstring("aa", 1, 0, "aa", 2, 0, 0) ; 299*de76a5adSDamjan Jovanovic result &= testSubstring("a", 0, 1, "a", 0, 1, 0) ; 300*de76a5adSDamjan Jovanovic result &= testSubstring("ab", 0, 2, "ab", 0, 2, 0) ; 301*de76a5adSDamjan Jovanovic result &= testSubstring("abc", 1, 2, "abc", 1, 2, 0) ; 302*de76a5adSDamjan Jovanovic result &= testSubstring("abcdef", 0, 3, "123abc", 3, 3, 0) ; 303*de76a5adSDamjan Jovanovic result &= testSubstring("abcdef", 1, 1, "123abc", 4, 1, 0) ; 304*de76a5adSDamjan Jovanovic 305*de76a5adSDamjan Jovanovic // substrings below must NOT be equal 306*de76a5adSDamjan Jovanovic result &= testSubstring("a", 0, 1, "a", 0, 0, 1) ; 307*de76a5adSDamjan Jovanovic result &= testSubstring("aaa", 1, 1, "", 0, 0, 1) ; 308*de76a5adSDamjan Jovanovic result &= testSubstring("bbb", 2, 1, "aaa", 2, 1, 1) ; 309*de76a5adSDamjan Jovanovic result &= testSubstring("abc", 0, 3, "abc", 0, 2, 1) ; 310*de76a5adSDamjan Jovanovic result &= testSubstring("bbc", 1, 2, "bbc", 0, 2, 1) ; 311*de76a5adSDamjan Jovanovic 312*de76a5adSDamjan Jovanovic // testing with wrong offsets and lengths 313*de76a5adSDamjan Jovanovic 314*de76a5adSDamjan Jovanovic tRes.tested("compareSubstring()", result) ; 315*de76a5adSDamjan Jovanovic } 316*de76a5adSDamjan Jovanovic 317*de76a5adSDamjan Jovanovic /** 318*de76a5adSDamjan Jovanovic * Performs tesing of two substrings. Also testing of opposite 319*de76a5adSDamjan Jovanovic * substrings order performed. 320*de76a5adSDamjan Jovanovic * @return <code>true</code> if substrings are equal and retruned 321*de76a5adSDamjan Jovanovic * value is 0 for both orders, 322*de76a5adSDamjan Jovanovic * if substrings are different and expected value 323*de76a5adSDamjan Jovanovic * returned for direct order and opposite value returned for 324*de76a5adSDamjan Jovanovic * opposite order. 325*de76a5adSDamjan Jovanovic */ 326*de76a5adSDamjan Jovanovic private boolean testSubstring(String str1, int p1, int len1, 327*de76a5adSDamjan Jovanovic String str2, int p2, int len2, int expRes) { 328*de76a5adSDamjan Jovanovic 329*de76a5adSDamjan Jovanovic boolean ret = true ; 330*de76a5adSDamjan Jovanovic 331*de76a5adSDamjan Jovanovic int res = -666 ; 332*de76a5adSDamjan Jovanovic try { 333*de76a5adSDamjan Jovanovic res = oObj.compareSubstring(str1, p1, len1, str2, p2, len2); 334*de76a5adSDamjan Jovanovic } catch (java.lang.NullPointerException e) { 335*de76a5adSDamjan Jovanovic log.println("Exception while method calling occurs :" + e); 336*de76a5adSDamjan Jovanovic } 337*de76a5adSDamjan Jovanovic 338*de76a5adSDamjan Jovanovic if (res != expRes) { 339*de76a5adSDamjan Jovanovic log.print("Comparing FAILED; return: " + res + ", expected: " + 340*de76a5adSDamjan Jovanovic expRes + " "); 341*de76a5adSDamjan Jovanovic ret = false ; 342*de76a5adSDamjan Jovanovic } else { 343*de76a5adSDamjan Jovanovic log.print("Comparing OK : "); 344*de76a5adSDamjan Jovanovic } 345*de76a5adSDamjan Jovanovic log.println("('" + str1 + "', " + p1 + ", " + len1 + ", '" + 346*de76a5adSDamjan Jovanovic str2 + "', " + p2 + ", " + len2 + ")"); 347*de76a5adSDamjan Jovanovic 348*de76a5adSDamjan Jovanovic res = -666 ; 349*de76a5adSDamjan Jovanovic try { 350*de76a5adSDamjan Jovanovic res = oObj.compareSubstring(str2, p2, len2, str1, p1, len1); 351*de76a5adSDamjan Jovanovic } catch (java.lang.NullPointerException e) { 352*de76a5adSDamjan Jovanovic log.println("Exception while method calling occurs :" + e); 353*de76a5adSDamjan Jovanovic } 354*de76a5adSDamjan Jovanovic 355*de76a5adSDamjan Jovanovic if (res != -expRes) { 356*de76a5adSDamjan Jovanovic log.print("Comparing FAILED; return: " + res + ", expected: " + 357*de76a5adSDamjan Jovanovic -expRes + " "); 358*de76a5adSDamjan Jovanovic ret = false ; 359*de76a5adSDamjan Jovanovic } else { 360*de76a5adSDamjan Jovanovic log.print("Comparing OK :"); 361*de76a5adSDamjan Jovanovic } 362*de76a5adSDamjan Jovanovic log.println("('" + str2 + "', " + p2 + ", " + len2 + ", '" + 363*de76a5adSDamjan Jovanovic str1 + "', " + p1 + ", " + len1 + ")"); 364*de76a5adSDamjan Jovanovic 365*de76a5adSDamjan Jovanovic return ret ; 366*de76a5adSDamjan Jovanovic } 367*de76a5adSDamjan Jovanovic 368*de76a5adSDamjan Jovanovic /** 369*de76a5adSDamjan Jovanovic * Test performed for sets of equal strings and not equal 370*de76a5adSDamjan Jovanovic * strings.<p> 371*de76a5adSDamjan Jovanovic * 372*de76a5adSDamjan Jovanovic * Has <b>OK</b> status if comparings of equal strings 373*de76a5adSDamjan Jovanovic * always return 0 and if comparisons of none equal returns 374*de76a5adSDamjan Jovanovic * proper value according to lexicographical order . 375*de76a5adSDamjan Jovanovic */ 376*de76a5adSDamjan Jovanovic public void _compareString() { 377*de76a5adSDamjan Jovanovic oObj.loadModule(TransliterationModules.LOWERCASE_UPPERCASE, loc); 378*de76a5adSDamjan Jovanovic boolean result = true ; 379*de76a5adSDamjan Jovanovic 380*de76a5adSDamjan Jovanovic result &= testString("", "", 0) ; 381*de76a5adSDamjan Jovanovic result &= testString("a", "", 1) ; 382*de76a5adSDamjan Jovanovic result &= testString("a", "a", 0) ; 383*de76a5adSDamjan Jovanovic result &= testString("A", "a", 0) ; 384*de76a5adSDamjan Jovanovic result &= testString("b", "a", 1) ; 385*de76a5adSDamjan Jovanovic result &= testString("\n", "\n", 0) ; 386*de76a5adSDamjan Jovanovic result &= testString("\n", "\t", 1) ; 387*de76a5adSDamjan Jovanovic result &= testString("aaa", "aaa", 0) ; 388*de76a5adSDamjan Jovanovic result &= testString("aaA", "aaa", 0) ; 389*de76a5adSDamjan Jovanovic result &= testString("aaa", "aa", 1) ; 390*de76a5adSDamjan Jovanovic result &= testString("ab", "aaa", 1) ; 391*de76a5adSDamjan Jovanovic result &= testString("aba", "aa", 1) ; 392*de76a5adSDamjan Jovanovic result &= testString("aaa\t\na", "aaa\t\na", 0) ; 393*de76a5adSDamjan Jovanovic result &= testString("aaa\t\nb", "aaa\t\na", 1) ; 394*de76a5adSDamjan Jovanovic 395*de76a5adSDamjan Jovanovic tRes.tested("compareString()", result) ; 396*de76a5adSDamjan Jovanovic } 397*de76a5adSDamjan Jovanovic 398*de76a5adSDamjan Jovanovic /** 399*de76a5adSDamjan Jovanovic * Performs tesing of two strings. If the expected value is not 0 400*de76a5adSDamjan Jovanovic * (i.e. strings are not equal), then also testing of opposite 401*de76a5adSDamjan Jovanovic * strings order performed. 402*de76a5adSDamjan Jovanovic * @return <code>true</code> if strings are equal and retruned 403*de76a5adSDamjan Jovanovic * value is 0, if strings are different and expected value 404*de76a5adSDamjan Jovanovic * returned for direct order and opposite value returned for 405*de76a5adSDamjan Jovanovic * opposite order. 406*de76a5adSDamjan Jovanovic */ 407*de76a5adSDamjan Jovanovic protected boolean testString(String str1, String str2, int expRes) { 408*de76a5adSDamjan Jovanovic if (expRes == 0) return testString(str1, str2, expRes, false) ; 409*de76a5adSDamjan Jovanovic return testString(str1, str2, expRes, true) ; 410*de76a5adSDamjan Jovanovic } 411*de76a5adSDamjan Jovanovic 412*de76a5adSDamjan Jovanovic private boolean testString(String str1, String str2, int expRes, 413*de76a5adSDamjan Jovanovic boolean testReverse) { 414*de76a5adSDamjan Jovanovic 415*de76a5adSDamjan Jovanovic boolean ret = true ; 416*de76a5adSDamjan Jovanovic 417*de76a5adSDamjan Jovanovic int res = -666 ; 418*de76a5adSDamjan Jovanovic try { 419*de76a5adSDamjan Jovanovic res = oObj.compareString(str1, str2); 420*de76a5adSDamjan Jovanovic } catch (java.lang.NullPointerException e) { 421*de76a5adSDamjan Jovanovic log.println("Exception while method calling occurs :" + e); 422*de76a5adSDamjan Jovanovic } 423*de76a5adSDamjan Jovanovic 424*de76a5adSDamjan Jovanovic if (res == expRes) { 425*de76a5adSDamjan Jovanovic log.println("Comparing of '" + str1 + "' and '" + str2 + "' OK" ); 426*de76a5adSDamjan Jovanovic } else { 427*de76a5adSDamjan Jovanovic log.println("Comparing of '" + str1 + "' and '" + str2 + 428*de76a5adSDamjan Jovanovic "' FAILED; return: " + res + ", expected: " + expRes); 429*de76a5adSDamjan Jovanovic ret = false ; 430*de76a5adSDamjan Jovanovic } 431*de76a5adSDamjan Jovanovic 432*de76a5adSDamjan Jovanovic if (!testReverse) return ret ; 433*de76a5adSDamjan Jovanovic 434*de76a5adSDamjan Jovanovic res = -666 ; 435*de76a5adSDamjan Jovanovic try { 436*de76a5adSDamjan Jovanovic res = oObj.compareString(str2, str1); 437*de76a5adSDamjan Jovanovic } catch (java.lang.NullPointerException e) { 438*de76a5adSDamjan Jovanovic log.println("Exception while method calling occurs :" + e); 439*de76a5adSDamjan Jovanovic } 440*de76a5adSDamjan Jovanovic 441*de76a5adSDamjan Jovanovic if (res == -expRes) { 442*de76a5adSDamjan Jovanovic log.println("Comparing of '" + str2 + "' and '" + str1 + "' OK" ); 443*de76a5adSDamjan Jovanovic } else { 444*de76a5adSDamjan Jovanovic log.println("Comparing of '" + str2 + "' and '" + str1 + 445*de76a5adSDamjan Jovanovic "' FAILED; return: " + res + ", expected: " + -expRes); 446*de76a5adSDamjan Jovanovic ret = false ; 447*de76a5adSDamjan Jovanovic } 448*de76a5adSDamjan Jovanovic 449*de76a5adSDamjan Jovanovic return ret ; 450*de76a5adSDamjan Jovanovic } 451*de76a5adSDamjan Jovanovic } 452