/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
package ifc.table;
import lib.MultiMethodTest;
import com.sun.star.sheet.XCellRangeAddressable;
import com.sun.star.sheet.XSheetCellCursor;
import com.sun.star.sheet.XSheetCellRange;
import com.sun.star.sheet.XSpreadsheet;
import com.sun.star.table.CellRangeAddress;
import com.sun.star.table.XCellCursor;
import com.sun.star.table.XCellRange;
import com.sun.star.uno.UnoRuntime;
/**
* Testing com.sun.star.table.XCellCursor
* interface methods :
*
gotoStart()
gotoEnd()
gotoNext()
gotoPrevious()
gotoOffset()
* This test needs the following object relations : *
'SHEET'
(of type XSpreadsheet
):
* is used for creating a new cell range.
*
* The component tested must implement
* XCellRangeAddressable
interface.
* * Test is NOT multithread compilant.
* After test completion object environment has to be recreated.
* @see com.sun.star.table.XCellCursor
*/
public class _XCellCursor extends MultiMethodTest {
public static XCellCursor oObj = null;
public static XSpreadsheet oSheet = null;
/**
* XCellRangeAddressable
interface is queried
* first for getting current position of cursor. The cursor
* is moved to next cell. Address of cursor obtained before
* and after moving.
* Has OK status if cursor column is changed after * movement.
*/
public void _gotoNext(){
boolean bResult = false;
int startCol, endCol, startRow, endRow = 0;
int startCol2, endCol2, startRow2, endRow2 = 0;
XCellRangeAddressable oRange = (XCellRangeAddressable)
UnoRuntime.queryInterface(XCellRangeAddressable.class, oObj);
CellRangeAddress oAddr = oRange.getRangeAddress();
startRow = oAddr.StartRow;
startCol = oAddr.StartColumn;
endRow = oAddr.EndRow;
endCol = oAddr.EndColumn;
oObj.gotoNext();
oAddr = oRange.getRangeAddress();
startRow2 = oAddr.StartRow;
startCol2 = oAddr.StartColumn;
endRow2 = oAddr.EndRow;
endCol2 = oAddr.EndColumn;
if (!(startCol == startCol2)){
bResult = true;
}
tRes.tested( "gotoNext()", bResult );
}
/**
* XCellRangeAddressable
interface is queried
* first for getting current position of cursor. The cursor
* is moved then. Address of cursor obtained before
* and after moving.
* Has OK status if starting column and row of * cursor is changed after movement.
*/
public void _gotoOffset(){
boolean bResult = false;
int startCol, endCol, startRow, endRow = 0;
int startCol2, endCol2, startRow2, endRow2 = 0;
XCellRangeAddressable oRange = (XCellRangeAddressable)
UnoRuntime.queryInterface(XCellRangeAddressable.class, oObj);
CellRangeAddress oAddr = oRange.getRangeAddress();
startRow = oAddr.StartRow;
startCol = oAddr.StartColumn;
endRow = oAddr.EndRow;
endCol = oAddr.EndColumn;
oObj.gotoOffset(4,4);
oAddr = oRange.getRangeAddress();
startRow2 = oAddr.StartRow;
startCol2 = oAddr.StartColumn;
endRow2 = oAddr.EndRow;
endCol2 = oAddr.EndColumn;
if (!(startCol == startCol2) || (startRow == startRow2)){
bResult = true;
}
tRes.tested( "gotoOffset()", bResult );
}
/**
* XCellRangeAddressable
interface is queried
* first for getting current position of cursor. The cursor
* is moved to previous cell. Address of cursor obtained before
* and after moving.
* Has OK status if cursor column is changed after * movement.
*/
public void _gotoPrevious(){
boolean bResult = false;
int startCol, endCol, startRow, endRow = 0;
int startCol2, endCol2, startRow2, endRow2 = 0;
XCellRangeAddressable oRange = (XCellRangeAddressable)
UnoRuntime.queryInterface(XCellRangeAddressable.class, oObj);
CellRangeAddress oAddr = oRange.getRangeAddress();
startRow = oAddr.StartRow;
startCol = oAddr.StartColumn;
endRow = oAddr.EndRow;
endCol = oAddr.EndColumn;
oObj.gotoPrevious();
oAddr = oRange.getRangeAddress();
startRow2 = oAddr.StartRow;
startCol2 = oAddr.StartColumn;
endRow2 = oAddr.EndRow;
endCol2 = oAddr.EndColumn;
if (!(startCol == startCol2)){
bResult = true;
}
tRes.tested( "gotoPrevious()", bResult );
}
/**
* XCellRangeAddressable
interface is queried
* first for getting current position of cursor. The cursor
* is moved to the start of its range .
* Address of cursor obtained before and after moving.
* Has OK status if cursor was collapsed to a single * cell (i.e. start column is the same as end column) after * movement.
*/
public void _gotoStart(){
boolean bResult = false;
int startCol, endCol, startRow, endRow = 0;
XCellRangeAddressable oRange = (XCellRangeAddressable)
UnoRuntime.queryInterface(XCellRangeAddressable.class, oObj);
oObj.gotoStart();
CellRangeAddress oAddr = oRange.getRangeAddress();
startRow = oAddr.StartRow;
startCol = oAddr.StartColumn;
endRow = oAddr.EndRow;
endCol = oAddr.EndColumn;
if ((startCol == endCol) && (endRow == startRow)){
bResult = true;
}
tRes.tested( "gotoStart()", bResult );
}
/**
* A new cell range is created using spreadsheet passed by relation.
* The method is tested on that range. gotoEnd
is
* called and range address is checked.
* Has OK status if cursor was collapsed to a single * cell (i.e. start column is the same as end column) after * movement.
*/ public void _gotoEnd(){ //gotoEnd gets it's own cursor to see a change oSheet = (XSpreadsheet) tEnv.getObjRelation("SHEET"); XCellRange testRange = oSheet.getCellRangeByName("$A$1:$g$7") ; XSheetCellRange testSheetRange = (XSheetCellRange) UnoRuntime.queryInterface(XSheetCellRange.class,testRange); XSheetCellCursor oCellCursor = oSheet.createCursorByRange (testSheetRange); XCellCursor oCursor = (XCellCursor) UnoRuntime.queryInterface(XCellCursor.class,oCellCursor); boolean bResult = false; int startCol, endCol, startRow, endRow = 0; XCellRangeAddressable oRange = (XCellRangeAddressable) UnoRuntime.queryInterface(XCellRangeAddressable.class, oCursor); oCursor.gotoEnd(); CellRangeAddress oAddr = oRange.getRangeAddress(); startRow = oAddr.StartRow; startCol = oAddr.StartColumn; endRow = oAddr.EndRow; endCol = oAddr.EndColumn; if ((startCol == endCol) && (endRow == startRow)){ bResult = true; } tRes.tested( "gotoEnd()", bResult ); } /** * Forces object environment recreation. */ protected void after() { disposeEnvironment(); } } //EOC _XCellCursor