1ef39d40dSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3ef39d40dSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4ef39d40dSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5ef39d40dSAndrew Rist  * distributed with this work for additional information
6ef39d40dSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7ef39d40dSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8ef39d40dSAndrew Rist  * "License"); you may not use this file except in compliance
9ef39d40dSAndrew Rist  * with the License.  You may obtain a copy of the License at
10ef39d40dSAndrew Rist  *
11ef39d40dSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12ef39d40dSAndrew Rist  *
13ef39d40dSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14ef39d40dSAndrew Rist  * software distributed under the License is distributed on an
15ef39d40dSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16ef39d40dSAndrew Rist  * KIND, either express or implied.  See the License for the
17ef39d40dSAndrew Rist  * specific language governing permissions and limitations
18ef39d40dSAndrew Rist  * under the License.
19ef39d40dSAndrew Rist  *
20ef39d40dSAndrew Rist  *************************************************************/
21ef39d40dSAndrew Rist 
22ef39d40dSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir package ifc.util;
25cdf0e10cSrcweir 
26cdf0e10cSrcweir import lib.MultiMethodTest;
27cdf0e10cSrcweir 
28cdf0e10cSrcweir import com.sun.star.util.SearchAlgorithms;
29cdf0e10cSrcweir import com.sun.star.util.SearchFlags;
30cdf0e10cSrcweir import com.sun.star.util.SearchOptions;
31cdf0e10cSrcweir import com.sun.star.util.SearchResult;
32cdf0e10cSrcweir import com.sun.star.util.XTextSearch;
33cdf0e10cSrcweir 
34cdf0e10cSrcweir /**
35cdf0e10cSrcweir * Testing <code>com.sun.star.util.XTextSearch</code>
36cdf0e10cSrcweir * interface methods :
37cdf0e10cSrcweir * <ul>
38cdf0e10cSrcweir *  <li><code> setOptions()</code></li>
39cdf0e10cSrcweir *  <li><code> searchForward()</code></li>
40cdf0e10cSrcweir *  <li><code> searchBackward()</code></li>
41cdf0e10cSrcweir * </ul> <p>
42cdf0e10cSrcweir * Test is <b> NOT </b> multithread compilant. <p>
43cdf0e10cSrcweir * @see com.sun.star.util.XTextSearch
44cdf0e10cSrcweir */
45cdf0e10cSrcweir public class _XTextSearch extends MultiMethodTest {
46cdf0e10cSrcweir 
47cdf0e10cSrcweir     // oObj filled by MultiMethodTest
48cdf0e10cSrcweir     public XTextSearch oObj = null ;
49cdf0e10cSrcweir 
50cdf0e10cSrcweir     protected final String str = "acababaabcababadcdaa" ;
51cdf0e10cSrcweir     protected final int startPos = 2 , endPos = 20 ;
52cdf0e10cSrcweir     protected final String searchStr = "(ab)*a(c|d)+" ;
53cdf0e10cSrcweir     protected final int fStartRes = 10, fEndRes = 18 ;
54cdf0e10cSrcweir     protected final int bStartRes = 18, bEndRes = 14 ;
55cdf0e10cSrcweir 
56cdf0e10cSrcweir     /**
57cdf0e10cSrcweir     * Sets options for searching regular expression in a string,
58cdf0e10cSrcweir     * ignoring case. <p>
59*bb6af6bcSPedro Giffuni     * Has <b>OK</b> status if no runtime exceptions occurred.
60cdf0e10cSrcweir     */
_setOptions()61cdf0e10cSrcweir     public void _setOptions() {
62cdf0e10cSrcweir 
63cdf0e10cSrcweir         SearchOptions opt = new SearchOptions() ;
64cdf0e10cSrcweir         opt.algorithmType = SearchAlgorithms.REGEXP ;
65cdf0e10cSrcweir         opt.searchFlag = SearchFlags.ALL_IGNORE_CASE ;
66cdf0e10cSrcweir         opt.searchString = searchStr ;
67cdf0e10cSrcweir 
68cdf0e10cSrcweir         oObj.setOptions(opt) ;
69cdf0e10cSrcweir 
70cdf0e10cSrcweir         tRes.tested("setOptions()", true) ;
71cdf0e10cSrcweir     }
72cdf0e10cSrcweir 
73cdf0e10cSrcweir 
74cdf0e10cSrcweir     /**
75cdf0e10cSrcweir     * Tries to find a substring matching regular expression. <p>
76cdf0e10cSrcweir     * Has <b>OK</b> if the correct substring position returned.
77cdf0e10cSrcweir     */
_searchForward()78cdf0e10cSrcweir     public void _searchForward() {
79cdf0e10cSrcweir         requiredMethod("setOptions()") ;
80cdf0e10cSrcweir 
81cdf0e10cSrcweir         SearchResult res = oObj.searchForward(str, startPos, endPos) ;
82cdf0e10cSrcweir 
83cdf0e10cSrcweir         log.println("Result of searching '" + searchStr + "' substring in \n'" +
84cdf0e10cSrcweir             str + "' string (" + res.subRegExpressions + " matches):") ;
85cdf0e10cSrcweir 
86cdf0e10cSrcweir         for (int i = 0; i < res.subRegExpressions; i++)
87cdf0e10cSrcweir             log.println("  (" + res.startOffset[i] + ", " + res.endOffset[i] + ")") ;
88cdf0e10cSrcweir 
89cdf0e10cSrcweir         tRes.tested("searchForward()", res.subRegExpressions > 0 &&
90cdf0e10cSrcweir             res.startOffset[0] == fStartRes && res.endOffset[0] == fEndRes) ;
91cdf0e10cSrcweir     }
92cdf0e10cSrcweir 
93cdf0e10cSrcweir     /**
94cdf0e10cSrcweir     * Tries to find a substring matching regular expression walking
95cdf0e10cSrcweir     * backward. <p>
96cdf0e10cSrcweir     * Has <b>OK</b> if the correct substring position returned.
97cdf0e10cSrcweir     */
_searchBackward()98cdf0e10cSrcweir     public void _searchBackward() {
99cdf0e10cSrcweir         requiredMethod("setOptions()") ;
100cdf0e10cSrcweir 
101cdf0e10cSrcweir         SearchResult res = oObj.searchBackward(str, endPos, startPos) ;
102cdf0e10cSrcweir 
103cdf0e10cSrcweir         log.println("Result of searching '" + searchStr + "' substring in \n'" +
104cdf0e10cSrcweir             str + "' string (" + res.subRegExpressions + " matches):") ;
105cdf0e10cSrcweir 
106cdf0e10cSrcweir         for (int i = 0; i < res.subRegExpressions; i++)
107cdf0e10cSrcweir             log.println("  (" + res.startOffset[i] + ", " + res.endOffset[i] + ")") ;
108cdf0e10cSrcweir 
109cdf0e10cSrcweir         tRes.tested("searchBackward()", res.subRegExpressions > 0 &&
110cdf0e10cSrcweir             res.startOffset[0] == bStartRes && res.endOffset[0] == bEndRes) ;
111cdf0e10cSrcweir     }
112cdf0e10cSrcweir 
113cdf0e10cSrcweir }
114cdf0e10cSrcweir 
115cdf0e10cSrcweir 
116