xref: /AOO41X/main/qadevOOo/tests/java/ifc/sheet/_XSheetCellRangeContainer.java (revision ef39d40d3f5e66cf3f035b3e93783012b340500d)
1*ef39d40dSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*ef39d40dSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*ef39d40dSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*ef39d40dSAndrew Rist  * distributed with this work for additional information
6*ef39d40dSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*ef39d40dSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*ef39d40dSAndrew Rist  * "License"); you may not use this file except in compliance
9*ef39d40dSAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
11*ef39d40dSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13*ef39d40dSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*ef39d40dSAndrew Rist  * software distributed under the License is distributed on an
15*ef39d40dSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*ef39d40dSAndrew Rist  * KIND, either express or implied.  See the License for the
17*ef39d40dSAndrew Rist  * specific language governing permissions and limitations
18*ef39d40dSAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
20*ef39d40dSAndrew Rist  *************************************************************/
21*ef39d40dSAndrew Rist 
22*ef39d40dSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir package ifc.sheet;
25cdf0e10cSrcweir 
26cdf0e10cSrcweir import lib.MultiMethodTest;
27cdf0e10cSrcweir import lib.StatusException;
28cdf0e10cSrcweir 
29cdf0e10cSrcweir import com.sun.star.sheet.XSheetCellRangeContainer;
30cdf0e10cSrcweir import com.sun.star.table.CellRangeAddress;
31cdf0e10cSrcweir 
32cdf0e10cSrcweir /**
33cdf0e10cSrcweir * Testing <code>com.sun.star.sheet.XSheetCellRangeContainer</code>
34cdf0e10cSrcweir * interface methods :
35cdf0e10cSrcweir * <ul>
36cdf0e10cSrcweir *  <li><code> addRangeAddress() </code></li>
37cdf0e10cSrcweir *  <li><code> removeRangeAddress() </code></li>
38cdf0e10cSrcweir *  <li><code> addRangeAddresses() </code></li>
39cdf0e10cSrcweir *  <li><code> removeRangeAddresses() </code></li>
40cdf0e10cSrcweir * </ul> <p>
41cdf0e10cSrcweir * Test is <b> NOT </b> multithread compilant. <p>
42cdf0e10cSrcweir * @see com.sun.star.sheet.XSheetCellRangeContainer
43cdf0e10cSrcweir */
44cdf0e10cSrcweir public class _XSheetCellRangeContainer extends MultiMethodTest {
45cdf0e10cSrcweir     public XSheetCellRangeContainer oObj = null;
46cdf0e10cSrcweir     public CellRangeAddress[] rAddr = new CellRangeAddress[3];
47cdf0e10cSrcweir 
48cdf0e10cSrcweir     /**
49cdf0e10cSrcweir     * After method called, the new array of structures 'CellRangeAddress'
50cdf0e10cSrcweir     *  is created. Then container is cleared.
51cdf0e10cSrcweir     */
before()52cdf0e10cSrcweir     public void before() {
53cdf0e10cSrcweir         for ( short i=0; i<=2; i++ ) {
54cdf0e10cSrcweir             rAddr[i] = new CellRangeAddress();
55cdf0e10cSrcweir             rAddr[i].Sheet = i;
56cdf0e10cSrcweir             rAddr[i].StartColumn = i;
57cdf0e10cSrcweir             rAddr[i].StartRow = i;
58cdf0e10cSrcweir             rAddr[i].EndColumn = i + 3;
59cdf0e10cSrcweir             rAddr[i].EndRow = i + 3;
60cdf0e10cSrcweir             try {
61cdf0e10cSrcweir                 oObj.removeRangeAddresses(oObj.getRangeAddresses());
62cdf0e10cSrcweir             } catch (com.sun.star.uno.Exception e) {
63cdf0e10cSrcweir                 e.printStackTrace(log);
64cdf0e10cSrcweir                 throw new StatusException("Error: Cannot remove "+
65cdf0e10cSrcweir                     "range addresses." ,e);
66cdf0e10cSrcweir             }
67cdf0e10cSrcweir         }
68cdf0e10cSrcweir     }
69cdf0e10cSrcweir 
70cdf0e10cSrcweir     /**
71cdf0e10cSrcweir     * The method called. Then new value is added to Container.
72cdf0e10cSrcweir     * Next we try to obtain back added value and check it. <p>
73cdf0e10cSrcweir     *
74cdf0e10cSrcweir     * Has <b> OK </b> status if the range just added presents among
75cdf0e10cSrcweir     * all ranges in the container.
76cdf0e10cSrcweir     */
_addRangeAddress()77cdf0e10cSrcweir     public void _addRangeAddress() {
78cdf0e10cSrcweir         boolean result = true;
79cdf0e10cSrcweir 
80cdf0e10cSrcweir         log.println("Elements before adding: " + oObj.getCount());
81cdf0e10cSrcweir         oObj.addRangeAddress(rAddr[0], false);
82cdf0e10cSrcweir         log.println("Elements after adding: " + oObj.getCount());
83cdf0e10cSrcweir         CellRangeAddress[] addr = oObj.getRangeAddresses();
84cdf0e10cSrcweir         boolean exist = false ;
85cdf0e10cSrcweir         for (int i=0; i<=oObj.getCount()-1; i++) {
86cdf0e10cSrcweir             if ( addr[i].Sheet == rAddr[0].Sheet &&
87cdf0e10cSrcweir                  addr[i].StartColumn == rAddr[0].StartColumn &&
88cdf0e10cSrcweir                  addr[i].StartRow == rAddr[0].StartRow &&
89cdf0e10cSrcweir                  addr[i].EndColumn == rAddr[0].EndColumn &&
90cdf0e10cSrcweir                  addr[i].EndRow == rAddr[0].EndRow) {
91cdf0e10cSrcweir 
92cdf0e10cSrcweir                 exist = true;
93cdf0e10cSrcweir             }
94cdf0e10cSrcweir         }
95cdf0e10cSrcweir 
96cdf0e10cSrcweir         result &= exist ;
97cdf0e10cSrcweir 
98cdf0e10cSrcweir         tRes.tested("addRangeAddress()" ,result);
99cdf0e10cSrcweir     }
100cdf0e10cSrcweir 
101cdf0e10cSrcweir     /**
102cdf0e10cSrcweir     * The method called. Then a value added before is removed.
103cdf0e10cSrcweir     * Next we check Container for existence of removed value. <p>
104cdf0e10cSrcweir     * Has <b> OK </b> status if the range just removed doesn't presents among
105cdf0e10cSrcweir     * all ranges in the container.
106cdf0e10cSrcweir     */
_removeRangeAddress()107cdf0e10cSrcweir     public void _removeRangeAddress() {
108cdf0e10cSrcweir         boolean result = true;
109cdf0e10cSrcweir 
110cdf0e10cSrcweir         log.println("Elements before removing: " + oObj.getCount());
111cdf0e10cSrcweir         try {
112cdf0e10cSrcweir             oObj.removeRangeAddress(rAddr[0]);
113cdf0e10cSrcweir         } catch (com.sun.star.container.NoSuchElementException e) {
114cdf0e10cSrcweir             e.printStackTrace(log);
115cdf0e10cSrcweir             result = false;
116cdf0e10cSrcweir         }
117cdf0e10cSrcweir         log.println("Elements after removing: " + oObj.getCount());
118cdf0e10cSrcweir         CellRangeAddress[] addr = oObj.getRangeAddresses();
119cdf0e10cSrcweir         for (int i=0; i<=oObj.getCount()-1; i++) {
120cdf0e10cSrcweir             if ( (addr[i].Sheet == rAddr[0].Sheet) &&
121cdf0e10cSrcweir                     (addr[i].StartColumn == rAddr[0].StartColumn) &&
122cdf0e10cSrcweir                     (addr[i].StartRow == rAddr[0].StartRow) &&
123cdf0e10cSrcweir                     (addr[i].EndColumn == rAddr[0].EndColumn) &&
124cdf0e10cSrcweir                     (addr[i].EndRow == rAddr[0].EndRow) ) {
125cdf0e10cSrcweir                 result = false;
126cdf0e10cSrcweir             }
127cdf0e10cSrcweir         }
128cdf0e10cSrcweir         tRes.tested("removeRangeAddress()" ,result);
129cdf0e10cSrcweir     }
130cdf0e10cSrcweir 
131cdf0e10cSrcweir     /**
132cdf0e10cSrcweir      * The method called. Then new values are added to Container.
133cdf0e10cSrcweir      * Next we try to obtain back all added values and check it. <p>
134cdf0e10cSrcweir      *
135cdf0e10cSrcweir      * Has <b> OK </b> status if the count of ranges increases by
136cdf0e10cSrcweir      * number of added ranges - 1 (one of ranges already exists in the
137cdf0e10cSrcweir      * container). And if all of ranges added exist in the container.
138cdf0e10cSrcweir      */
_addRangeAddresses()139cdf0e10cSrcweir     public void _addRangeAddresses() {
140cdf0e10cSrcweir         executeMethod("addRangeAddress()");
141cdf0e10cSrcweir 
142cdf0e10cSrcweir         boolean result = true;
143cdf0e10cSrcweir 
144cdf0e10cSrcweir         int cntBefore = oObj.getCount();
145cdf0e10cSrcweir         log.println("Elements before adding: " + cntBefore);
146cdf0e10cSrcweir         oObj.addRangeAddresses(rAddr, false);
147cdf0e10cSrcweir         log.println("Elements after adding: " + oObj.getCount());
148cdf0e10cSrcweir         CellRangeAddress[] addr = oObj.getRangeAddresses();
149cdf0e10cSrcweir 
150cdf0e10cSrcweir         result &= cntBefore + rAddr.length == oObj.getCount();
151cdf0e10cSrcweir 
152cdf0e10cSrcweir         for (int j = 0; j < rAddr.length; j++) {
153cdf0e10cSrcweir             boolean exist = false ;
154cdf0e10cSrcweir             for (int i=0; i < oObj.getCount(); i++) {
155cdf0e10cSrcweir                 if ( addr[i].Sheet == rAddr[j].Sheet &&
156cdf0e10cSrcweir                      addr[i].StartColumn == rAddr[j].StartColumn &&
157cdf0e10cSrcweir                      addr[i].StartRow == rAddr[j].StartRow &&
158cdf0e10cSrcweir                      addr[i].EndColumn == rAddr[j].EndColumn &&
159cdf0e10cSrcweir                      addr[i].EndRow == rAddr[j].EndRow ) {
160cdf0e10cSrcweir 
161cdf0e10cSrcweir                     exist = true;
162cdf0e10cSrcweir                     break;
163cdf0e10cSrcweir                 }
164cdf0e10cSrcweir             }
165cdf0e10cSrcweir             result &= exist;
166cdf0e10cSrcweir         }
167cdf0e10cSrcweir 
168cdf0e10cSrcweir         tRes.tested("addRangeAddresses()" ,result);
169cdf0e10cSrcweir     }
170cdf0e10cSrcweir 
171cdf0e10cSrcweir     /**
172cdf0e10cSrcweir      * All ranges are remover from contaier.
173cdf0e10cSrcweir      *
174cdf0e10cSrcweir      * Has <b> OK </b> status if there are no more ranges in the container.
175cdf0e10cSrcweir      */
_removeRangeAddresses()176cdf0e10cSrcweir     public void _removeRangeAddresses() {
177cdf0e10cSrcweir         boolean result = false;
178cdf0e10cSrcweir         int cnt;
179cdf0e10cSrcweir 
180cdf0e10cSrcweir         log.println("Elements before removing: " + oObj.getCount());
181cdf0e10cSrcweir         try {
182cdf0e10cSrcweir             oObj.removeRangeAddresses(oObj.getRangeAddresses());
183cdf0e10cSrcweir         } catch (com.sun.star.container.NoSuchElementException e) {
184cdf0e10cSrcweir             e.printStackTrace(log);
185cdf0e10cSrcweir             result = false;
186cdf0e10cSrcweir         }
187cdf0e10cSrcweir         if ( (cnt = oObj.getCount()) == 0) {
188cdf0e10cSrcweir             result = true;
189cdf0e10cSrcweir         }
190cdf0e10cSrcweir         log.println("Elements after removing: " + cnt);
191cdf0e10cSrcweir         tRes.tested("removeRangeAddresses()" ,result);
192cdf0e10cSrcweir     }
193cdf0e10cSrcweir 
194cdf0e10cSrcweir     /**
195cdf0e10cSrcweir     * Forces environment recreation.
196cdf0e10cSrcweir     */
after()197cdf0e10cSrcweir     protected void after() {
198cdf0e10cSrcweir         disposeEnvironment();
199cdf0e10cSrcweir     }
200cdf0e10cSrcweir 
201cdf0e10cSrcweir }
202