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 10*ef39d40dSAndrew Rist * 11*ef39d40dSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*ef39d40dSAndrew Rist * 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. 19*ef39d40dSAndrew Rist * 20*ef39d40dSAndrew Rist *************************************************************/ 21*ef39d40dSAndrew Rist 22*ef39d40dSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir package ifc.table; 25cdf0e10cSrcweir 26cdf0e10cSrcweir import lib.MultiMethodTest; 27cdf0e10cSrcweir 28cdf0e10cSrcweir import com.sun.star.sheet.XCellRangeAddressable; 29cdf0e10cSrcweir import com.sun.star.sheet.XSheetCellCursor; 30cdf0e10cSrcweir import com.sun.star.sheet.XSheetCellRange; 31cdf0e10cSrcweir import com.sun.star.sheet.XSpreadsheet; 32cdf0e10cSrcweir import com.sun.star.table.CellRangeAddress; 33cdf0e10cSrcweir import com.sun.star.table.XCellCursor; 34cdf0e10cSrcweir import com.sun.star.table.XCellRange; 35cdf0e10cSrcweir import com.sun.star.uno.UnoRuntime; 36cdf0e10cSrcweir 37cdf0e10cSrcweir /** 38cdf0e10cSrcweir * Testing <code>com.sun.star.table.XCellCursor</code> 39cdf0e10cSrcweir * interface methods : 40cdf0e10cSrcweir * <ul> 41cdf0e10cSrcweir * <li><code> gotoStart()</code></li> 42cdf0e10cSrcweir * <li><code> gotoEnd()</code></li> 43cdf0e10cSrcweir * <li><code> gotoNext()</code></li> 44cdf0e10cSrcweir * <li><code> gotoPrevious()</code></li> 45cdf0e10cSrcweir * <li><code> gotoOffset()</code></li> 46cdf0e10cSrcweir * </ul> <p> 47cdf0e10cSrcweir * This test needs the following object relations : 48cdf0e10cSrcweir * <ul> 49cdf0e10cSrcweir * <li> <code>'SHEET'</code> (of type <code>XSpreadsheet</code>): 50cdf0e10cSrcweir * is used for creating a new cell range.</li> 51cdf0e10cSrcweir * <ul> <p> 52cdf0e10cSrcweir * 53cdf0e10cSrcweir * The component tested <b>must implement</b> 54cdf0e10cSrcweir * <code>XCellRangeAddressable</code> interface. <p> 55cdf0e10cSrcweir * 56cdf0e10cSrcweir * Test is <b> NOT </b> multithread compilant. <p> 57cdf0e10cSrcweir * After test completion object environment has to be recreated. 58cdf0e10cSrcweir * @see com.sun.star.table.XCellCursor 59cdf0e10cSrcweir */ 60cdf0e10cSrcweir public class _XCellCursor extends MultiMethodTest { 61cdf0e10cSrcweir 62cdf0e10cSrcweir public static XCellCursor oObj = null; 63cdf0e10cSrcweir public static XSpreadsheet oSheet = null; 64cdf0e10cSrcweir 65cdf0e10cSrcweir /** 66cdf0e10cSrcweir * <code>XCellRangeAddressable</code> interface is queried 67cdf0e10cSrcweir * first for getting current position of cursor. The cursor 68cdf0e10cSrcweir * is moved to next cell. Address of cursor obtained before 69cdf0e10cSrcweir * and after moving. <p> 70cdf0e10cSrcweir * Has <b> OK </b> status if cursor column is changed after 71cdf0e10cSrcweir * movement. <p> 72cdf0e10cSrcweir */ _gotoNext()73cdf0e10cSrcweir public void _gotoNext(){ 74cdf0e10cSrcweir boolean bResult = false; 75cdf0e10cSrcweir int startCol, endCol, startRow, endRow = 0; 76cdf0e10cSrcweir int startCol2, endCol2, startRow2, endRow2 = 0; 77cdf0e10cSrcweir 78cdf0e10cSrcweir XCellRangeAddressable oRange = (XCellRangeAddressable) 79cdf0e10cSrcweir UnoRuntime.queryInterface(XCellRangeAddressable.class, oObj); 80cdf0e10cSrcweir CellRangeAddress oAddr = oRange.getRangeAddress(); 81cdf0e10cSrcweir startRow = oAddr.StartRow; 82cdf0e10cSrcweir startCol = oAddr.StartColumn; 83cdf0e10cSrcweir endRow = oAddr.EndRow; 84cdf0e10cSrcweir endCol = oAddr.EndColumn; 85cdf0e10cSrcweir 86cdf0e10cSrcweir oObj.gotoNext(); 87cdf0e10cSrcweir 88cdf0e10cSrcweir oAddr = oRange.getRangeAddress(); 89cdf0e10cSrcweir startRow2 = oAddr.StartRow; 90cdf0e10cSrcweir startCol2 = oAddr.StartColumn; 91cdf0e10cSrcweir endRow2 = oAddr.EndRow; 92cdf0e10cSrcweir endCol2 = oAddr.EndColumn; 93cdf0e10cSrcweir 94cdf0e10cSrcweir if (!(startCol == startCol2)){ 95cdf0e10cSrcweir bResult = true; 96cdf0e10cSrcweir } 97cdf0e10cSrcweir tRes.tested( "gotoNext()", bResult ); 98cdf0e10cSrcweir } 99cdf0e10cSrcweir 100cdf0e10cSrcweir /** 101cdf0e10cSrcweir * <code>XCellRangeAddressable</code> interface is queried 102cdf0e10cSrcweir * first for getting current position of cursor. The cursor 103cdf0e10cSrcweir * is moved then. Address of cursor obtained before 104cdf0e10cSrcweir * and after moving. <p> 105cdf0e10cSrcweir * Has <b> OK </b> status if starting column and row of 106cdf0e10cSrcweir * cursor is changed after movement. <p> 107cdf0e10cSrcweir */ _gotoOffset()108cdf0e10cSrcweir public void _gotoOffset(){ 109cdf0e10cSrcweir boolean bResult = false; 110cdf0e10cSrcweir int startCol, endCol, startRow, endRow = 0; 111cdf0e10cSrcweir int startCol2, endCol2, startRow2, endRow2 = 0; 112cdf0e10cSrcweir 113cdf0e10cSrcweir XCellRangeAddressable oRange = (XCellRangeAddressable) 114cdf0e10cSrcweir UnoRuntime.queryInterface(XCellRangeAddressable.class, oObj); 115cdf0e10cSrcweir CellRangeAddress oAddr = oRange.getRangeAddress(); 116cdf0e10cSrcweir startRow = oAddr.StartRow; 117cdf0e10cSrcweir startCol = oAddr.StartColumn; 118cdf0e10cSrcweir endRow = oAddr.EndRow; 119cdf0e10cSrcweir endCol = oAddr.EndColumn; 120cdf0e10cSrcweir 121cdf0e10cSrcweir oObj.gotoOffset(4,4); 122cdf0e10cSrcweir 123cdf0e10cSrcweir oAddr = oRange.getRangeAddress(); 124cdf0e10cSrcweir startRow2 = oAddr.StartRow; 125cdf0e10cSrcweir startCol2 = oAddr.StartColumn; 126cdf0e10cSrcweir endRow2 = oAddr.EndRow; 127cdf0e10cSrcweir endCol2 = oAddr.EndColumn; 128cdf0e10cSrcweir if (!(startCol == startCol2) || (startRow == startRow2)){ 129cdf0e10cSrcweir bResult = true; 130cdf0e10cSrcweir } 131cdf0e10cSrcweir tRes.tested( "gotoOffset()", bResult ); 132cdf0e10cSrcweir } 133cdf0e10cSrcweir 134cdf0e10cSrcweir /** 135cdf0e10cSrcweir * <code>XCellRangeAddressable</code> interface is queried 136cdf0e10cSrcweir * first for getting current position of cursor. The cursor 137cdf0e10cSrcweir * is moved to previous cell. Address of cursor obtained before 138cdf0e10cSrcweir * and after moving. <p> 139cdf0e10cSrcweir * Has <b> OK </b> status if cursor column is changed after 140cdf0e10cSrcweir * movement. <p> 141cdf0e10cSrcweir */ _gotoPrevious()142cdf0e10cSrcweir public void _gotoPrevious(){ 143cdf0e10cSrcweir boolean bResult = false; 144cdf0e10cSrcweir int startCol, endCol, startRow, endRow = 0; 145cdf0e10cSrcweir int startCol2, endCol2, startRow2, endRow2 = 0; 146cdf0e10cSrcweir 147cdf0e10cSrcweir XCellRangeAddressable oRange = (XCellRangeAddressable) 148cdf0e10cSrcweir UnoRuntime.queryInterface(XCellRangeAddressable.class, oObj); 149cdf0e10cSrcweir CellRangeAddress oAddr = oRange.getRangeAddress(); 150cdf0e10cSrcweir startRow = oAddr.StartRow; 151cdf0e10cSrcweir startCol = oAddr.StartColumn; 152cdf0e10cSrcweir endRow = oAddr.EndRow; 153cdf0e10cSrcweir endCol = oAddr.EndColumn; 154cdf0e10cSrcweir 155cdf0e10cSrcweir oObj.gotoPrevious(); 156cdf0e10cSrcweir 157cdf0e10cSrcweir oAddr = oRange.getRangeAddress(); 158cdf0e10cSrcweir startRow2 = oAddr.StartRow; 159cdf0e10cSrcweir startCol2 = oAddr.StartColumn; 160cdf0e10cSrcweir endRow2 = oAddr.EndRow; 161cdf0e10cSrcweir endCol2 = oAddr.EndColumn; 162cdf0e10cSrcweir 163cdf0e10cSrcweir if (!(startCol == startCol2)){ 164cdf0e10cSrcweir bResult = true; 165cdf0e10cSrcweir } 166cdf0e10cSrcweir tRes.tested( "gotoPrevious()", bResult ); 167cdf0e10cSrcweir } 168cdf0e10cSrcweir 169cdf0e10cSrcweir /** 170cdf0e10cSrcweir * <code>XCellRangeAddressable</code> interface is queried 171cdf0e10cSrcweir * first for getting current position of cursor. The cursor 172cdf0e10cSrcweir * is moved to the start of its range . 173cdf0e10cSrcweir * Address of cursor obtained before and after moving. <p> 174cdf0e10cSrcweir * Has <b> OK </b> status if cursor was collapsed to a single 175cdf0e10cSrcweir * cell (i.e. start column is the same as end column) after 176cdf0e10cSrcweir * movement. <p> 177cdf0e10cSrcweir */ _gotoStart()178cdf0e10cSrcweir public void _gotoStart(){ 179cdf0e10cSrcweir boolean bResult = false; 180cdf0e10cSrcweir int startCol, endCol, startRow, endRow = 0; 181cdf0e10cSrcweir 182cdf0e10cSrcweir XCellRangeAddressable oRange = (XCellRangeAddressable) 183cdf0e10cSrcweir UnoRuntime.queryInterface(XCellRangeAddressable.class, oObj); 184cdf0e10cSrcweir oObj.gotoStart(); 185cdf0e10cSrcweir CellRangeAddress oAddr = oRange.getRangeAddress(); 186cdf0e10cSrcweir startRow = oAddr.StartRow; 187cdf0e10cSrcweir startCol = oAddr.StartColumn; 188cdf0e10cSrcweir endRow = oAddr.EndRow; 189cdf0e10cSrcweir endCol = oAddr.EndColumn; 190cdf0e10cSrcweir if ((startCol == endCol) && (endRow == startRow)){ 191cdf0e10cSrcweir bResult = true; 192cdf0e10cSrcweir } 193cdf0e10cSrcweir 194cdf0e10cSrcweir tRes.tested( "gotoStart()", bResult ); 195cdf0e10cSrcweir } 196cdf0e10cSrcweir 197cdf0e10cSrcweir /** 198cdf0e10cSrcweir * A new cell range is created using spreadsheet passed by relation. 199cdf0e10cSrcweir * The method is tested on that range. <code>gotoEnd</code> is 200cdf0e10cSrcweir * called and range address is checked.<p> 201cdf0e10cSrcweir * Has <b> OK </b> status if cursor was collapsed to a single 202cdf0e10cSrcweir * cell (i.e. start column is the same as end column) after 203cdf0e10cSrcweir * movement. <p> 204cdf0e10cSrcweir */ _gotoEnd()205cdf0e10cSrcweir public void _gotoEnd(){ 206cdf0e10cSrcweir //gotoEnd gets it's own cursor to see a change 207cdf0e10cSrcweir oSheet = (XSpreadsheet) tEnv.getObjRelation("SHEET"); 208cdf0e10cSrcweir XCellRange testRange = oSheet.getCellRangeByName("$A$1:$g$7") ; 209cdf0e10cSrcweir XSheetCellRange testSheetRange = (XSheetCellRange) 210cdf0e10cSrcweir UnoRuntime.queryInterface(XSheetCellRange.class,testRange); 211cdf0e10cSrcweir XSheetCellCursor oCellCursor = oSheet.createCursorByRange 212cdf0e10cSrcweir (testSheetRange); 213cdf0e10cSrcweir XCellCursor oCursor = (XCellCursor) 214cdf0e10cSrcweir UnoRuntime.queryInterface(XCellCursor.class,oCellCursor); 215cdf0e10cSrcweir 216cdf0e10cSrcweir boolean bResult = false; 217cdf0e10cSrcweir int startCol, endCol, startRow, endRow = 0; 218cdf0e10cSrcweir 219cdf0e10cSrcweir XCellRangeAddressable oRange = (XCellRangeAddressable) 220cdf0e10cSrcweir UnoRuntime.queryInterface(XCellRangeAddressable.class, oCursor); 221cdf0e10cSrcweir oCursor.gotoEnd(); 222cdf0e10cSrcweir CellRangeAddress oAddr = oRange.getRangeAddress(); 223cdf0e10cSrcweir startRow = oAddr.StartRow; 224cdf0e10cSrcweir startCol = oAddr.StartColumn; 225cdf0e10cSrcweir endRow = oAddr.EndRow; 226cdf0e10cSrcweir endCol = oAddr.EndColumn; 227cdf0e10cSrcweir if ((startCol == endCol) && (endRow == startRow)){ 228cdf0e10cSrcweir bResult = true; 229cdf0e10cSrcweir } 230cdf0e10cSrcweir 231cdf0e10cSrcweir tRes.tested( "gotoEnd()", bResult ); 232cdf0e10cSrcweir } 233cdf0e10cSrcweir 234cdf0e10cSrcweir /** 235cdf0e10cSrcweir * Forces object environment recreation. 236cdf0e10cSrcweir */ after()237cdf0e10cSrcweir protected void after() { 238cdf0e10cSrcweir disposeEnvironment(); 239cdf0e10cSrcweir } 240cdf0e10cSrcweir 241cdf0e10cSrcweir 242cdf0e10cSrcweir } //EOC _XCellCursor 243cdf0e10cSrcweir 244