You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by li...@apache.org on 2012/08/20 04:30:58 UTC
svn commit: r1374898 - in
/incubator/ooo/trunk/main/test/testuno/source/testcase/uno/sc/sheet: ./
SheetBasicTest.java
Author: liuzhe
Date: Mon Aug 20 02:30:58 2012
New Revision: 1374898
URL: http://svn.apache.org/viewvc?rev=1374898&view=rev
Log:
#120560# - [Automation][UNO] Insert/Rename/Select/Copy/Paste/Move/Delete Sheet.
Patch by: Terry Yang <po...@hotmail.com>
Review by: Liu Zhe <al...@gmail.com>
Added:
incubator/ooo/trunk/main/test/testuno/source/testcase/uno/sc/sheet/
incubator/ooo/trunk/main/test/testuno/source/testcase/uno/sc/sheet/SheetBasicTest.java
Added: incubator/ooo/trunk/main/test/testuno/source/testcase/uno/sc/sheet/SheetBasicTest.java
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/test/testuno/source/testcase/uno/sc/sheet/SheetBasicTest.java?rev=1374898&view=auto
==============================================================================
--- incubator/ooo/trunk/main/test/testuno/source/testcase/uno/sc/sheet/SheetBasicTest.java (added)
+++ incubator/ooo/trunk/main/test/testuno/source/testcase/uno/sc/sheet/SheetBasicTest.java Mon Aug 20 02:30:58 2012
@@ -0,0 +1,278 @@
+/* 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 testcase.uno.sc.sheet;
+
+import static org.junit.Assert.*;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openoffice.test.common.FileUtil;
+import org.openoffice.test.common.Testspace;
+import org.openoffice.test.uno.UnoApp;
+
+import com.sun.star.beans.PropertyValue;
+import com.sun.star.container.XIndexAccess;
+import com.sun.star.container.XNamed;
+import com.sun.star.frame.XModel;
+import com.sun.star.frame.XStorable;
+import com.sun.star.io.IOException;
+import com.sun.star.lang.IndexOutOfBoundsException;
+import com.sun.star.lang.WrappedTargetException;
+import com.sun.star.lang.XComponent;
+import com.sun.star.sheet.XSpreadsheet;
+import com.sun.star.sheet.XSpreadsheetDocument;
+import com.sun.star.sheet.XSpreadsheetView;
+import com.sun.star.sheet.XSpreadsheets;
+import com.sun.star.table.XCell;
+import com.sun.star.uno.UnoRuntime;
+
+public class SheetBasicTest {
+ UnoApp unoApp = new UnoApp();
+
+ XSpreadsheetDocument scDocument = null;
+ XComponent scComponent = null;
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ unoApp.start();
+ // New a SC document
+ scComponent = unoApp.newDocument("scalc");
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ unoApp.closeDocument(scComponent);
+ unoApp.close();
+ }
+
+ @Test
+ public void insertRenameDeleteSheet() throws Exception {
+ // Insert a sheet named aa after first sheet
+ String sheetname = "aa";
+ scDocument = (XSpreadsheetDocument) UnoRuntime.queryInterface(
+ XSpreadsheetDocument.class, scComponent);
+ XSpreadsheets spreadsheets = scDocument.getSheets();
+ spreadsheets.insertNewByName(sheetname, (short) 1);
+
+ // active the sheet second sheet aa
+ XIndexAccess xspreadsheetIndex = (XIndexAccess) UnoRuntime
+ .queryInterface(XIndexAccess.class, spreadsheets);
+ XSpreadsheet newSpreadSheet = (XSpreadsheet) UnoRuntime.queryInterface(
+ XSpreadsheet.class, xspreadsheetIndex.getByIndex(1));
+ XModel xSpreadsheetModel = (XModel) UnoRuntime.queryInterface(
+ XModel.class, scDocument);
+ XSpreadsheetView xSpeadsheetView = (XSpreadsheetView) UnoRuntime
+ .queryInterface(XSpreadsheetView.class,
+ xSpreadsheetModel.getCurrentController());
+ xSpeadsheetView.setActiveSheet(newSpreadSheet);
+
+ // get the new speadsheet name
+ XNamed xsheetname = (XNamed) UnoRuntime.queryInterface(XNamed.class,
+ newSpreadSheet);
+ assertEquals("actual should equals aa", sheetname, xsheetname.getName());
+
+ // Change the Spreadsheet name
+ String changedname = "SpeadsheetAfterChange";
+ xsheetname.setName(changedname);
+
+ // Save and reload document
+ reloadSpreadsheet("TestSpreadsheet.xls");
+
+ // Verify the changed Spreadsheet name
+ assertEquals("actual should equals SpeadsheetAfterChange", changedname,
+ xsheetname.getName());
+
+ spreadsheets.removeByName(changedname);
+
+ assertFalse("actual should equals false",
+ spreadsheets.hasByName(changedname));
+
+ }
+
+ @Test
+ public void copypastesheet() throws Exception {
+ // Insert some value into cells
+ scDocument = (XSpreadsheetDocument) UnoRuntime.queryInterface(
+ XSpreadsheetDocument.class, scComponent);
+ XSpreadsheets spreadsheets = scDocument.getSheets();
+ XIndexAccess xspreadsheetIndex = (XIndexAccess) UnoRuntime
+ .queryInterface(XIndexAccess.class, spreadsheets);
+ XSpreadsheet spreadSheet = (XSpreadsheet) UnoRuntime.queryInterface(
+ XSpreadsheet.class, xspreadsheetIndex.getByIndex(0));
+ XNamed xsheetname = (XNamed) UnoRuntime.queryInterface(XNamed.class,
+ spreadSheet);
+ xsheetname.setName("sourcesheet");
+ String[][] stringValues = { { "", "Jan", "Feb", "Mar", "Apr", "Mai" },
+ { "Profit", "12.3", "43.2", "5.1", "76", "56.8" },
+ { "Rival in business", "12.2", "12.6", "17.7", "20.4", "100" }, };
+ // input strings into sheet1
+ for (int intY = 0; intY < stringValues.length; intY++) {
+ for (int intX = 0; intX < stringValues[intY].length; intX++) {
+ // Insert the value to the cell, specified by intY and intX.
+ this.insertIntoCell(intY, intX, stringValues[intY][intX],
+ spreadSheet, "");
+ }
+ }
+
+ // copy the sheet from sourcesheet to copysheet
+ String newcopysheet = "copysheet";
+ spreadsheets.copyByName(xsheetname.getName(), newcopysheet, (short) 2);
+
+ // Save and reload document
+ reloadSpreadsheet("TestCopysheet.xls");
+ XModel xSpreadsheetModel = (XModel) UnoRuntime.queryInterface(
+ XModel.class, scDocument);
+ XSpreadsheetView xSpeadsheetView = (XSpreadsheetView) UnoRuntime
+ .queryInterface(XSpreadsheetView.class,
+ xSpreadsheetModel.getCurrentController());
+ XSpreadsheet copysheet = (XSpreadsheet) UnoRuntime.queryInterface(
+ XSpreadsheet.class, xspreadsheetIndex.getByIndex(2));
+ for (int intY = 0; intY < stringValues.length; intY++) {
+ for (int intX = 0; intX < stringValues[intY].length; intX++) {
+ XCell xcell = null;
+ xcell = copysheet.getCellByPosition(intY, intX);
+ assertEquals(stringValues[intY][intX], xcell.getFormula());
+ }
+ }
+
+ }
+
+ @Test
+ public void movesheet() throws Exception {
+
+ // new sc document
+ scDocument = (XSpreadsheetDocument) UnoRuntime.queryInterface(
+ XSpreadsheetDocument.class, scComponent);
+
+ // change the first sheet name and input same value into the sheet cell
+ XSpreadsheets spreadsheets = scDocument.getSheets();
+ XIndexAccess xspreadsheetIndex = (XIndexAccess) UnoRuntime
+ .queryInterface(XIndexAccess.class, spreadsheets);
+ XSpreadsheet spreadSheet = (XSpreadsheet) UnoRuntime.queryInterface(
+ XSpreadsheet.class, xspreadsheetIndex.getByIndex(0));
+ XNamed xsheetname = (XNamed) UnoRuntime.queryInterface(XNamed.class,
+ spreadSheet);
+ String sheetname = "sourcesheet";
+ xsheetname.setName(sheetname);
+ String[][] stringValues = { { "", "Jan", "Feb", "Mar", "Apr", "Mai" },
+ { "Profit", "12.3", "43.2", "5.1", "76", "56.8" },
+ { "Rival in business", "12.2", "12.6", "17.7", "20.4", "100" }, };
+
+ for (int intY = 0; intY < stringValues.length; intY++) {
+ for (int intX = 0; intX < stringValues[intY].length; intX++) {
+ // Insert the value to the cell, specified by intY and intX.
+ this.insertIntoCell(intY, intX, stringValues[intY][intX],
+ spreadSheet, "");
+ }
+ }
+
+ // Before move, get the 2nd sheet name
+ XSpreadsheet secondSheetBeforeMove = (XSpreadsheet) UnoRuntime
+ .queryInterface(XSpreadsheet.class,
+ xspreadsheetIndex.getByIndex(1));
+ XNamed secondSheetNameBeforeMove = (XNamed) UnoRuntime.queryInterface(
+ XNamed.class, secondSheetBeforeMove);
+
+ // move the first sheet
+ spreadsheets.moveByName(sheetname, (short) 2);
+
+ // Save and reload document
+ reloadSpreadsheet("Testmovesheet.xls");
+
+ // After move, get the first sheet name, and verify it same as 2nd sheet
+ // name before move
+ XSpreadsheet firstSheetAfterMove = (XSpreadsheet) UnoRuntime
+ .queryInterface(XSpreadsheet.class,
+ xspreadsheetIndex.getByIndex(0));
+ XNamed xfirstsheetnameAfterMove = (XNamed) UnoRuntime.queryInterface(
+ XNamed.class, firstSheetAfterMove);
+ assertEquals("Expect result should be Sheet2",
+ secondSheetNameBeforeMove.getName(),
+ xfirstsheetnameAfterMove.getName());
+
+ // Get the target sheet name after move
+ XSpreadsheet sheetAfterMove = (XSpreadsheet) UnoRuntime.queryInterface(
+ XSpreadsheet.class, xspreadsheetIndex.getByIndex(1));
+ XNamed xsheetnameAfterMove = (XNamed) UnoRuntime.queryInterface(
+ XNamed.class, sheetAfterMove);
+ assertEquals("Expect result should be sourcesheet", sheetname,
+ xsheetnameAfterMove.getName());
+
+ // Check the cell value after move
+ XModel xSpreadsheetModel = (XModel) UnoRuntime.queryInterface(
+ XModel.class, scDocument);
+ XSpreadsheetView xSpeadsheetView = (XSpreadsheetView) UnoRuntime
+ .queryInterface(XSpreadsheetView.class,
+ xSpreadsheetModel.getCurrentController());
+ XSpreadsheet movesheet = (XSpreadsheet) UnoRuntime.queryInterface(
+ XSpreadsheet.class, xspreadsheetIndex.getByIndex(1));
+ for (int intY = 0; intY < stringValues.length; intY++) {
+ for (int intX = 0; intX < stringValues[intY].length; intX++) {
+ XCell xcell = null;
+ xcell = movesheet.getCellByPosition(intY, intX);
+ assertEquals(stringValues[intY][intX], xcell.getFormula());
+ }
+ }
+
+ }
+
+ // input value into sheet cell
+ public static void insertIntoCell(int intX, int intY, String stringValue,
+ XSpreadsheet xspreadsheet, String stringFlag)
+ throws IndexOutOfBoundsException {
+ XCell xcell = null;
+ xcell = xspreadsheet.getCellByPosition(intX, intY);
+ if (stringFlag.equals("V")) {
+ xcell.setValue((new Float(stringValue)).floatValue());
+ } else {
+ xcell.setFormula(stringValue);
+ }
+ }
+
+ // Save and load the document
+ public XSpreadsheetDocument reloadSpreadsheet(String spreadSheetname)
+ throws Exception {
+ String filePath = Testspace.getPath("output/" + spreadSheetname);
+ XStorable xStorable = (XStorable) UnoRuntime.queryInterface(
+ XStorable.class, scDocument);
+ PropertyValue[] aStoreProperties = new PropertyValue[2];
+ aStoreProperties[0] = new PropertyValue();
+ aStoreProperties[1] = new PropertyValue();
+ aStoreProperties[0].Name = "Override";
+ aStoreProperties[0].Value = true;
+ aStoreProperties[1].Name = "FilterName";
+ aStoreProperties[1].Value = "MS Excel 97";
+ xStorable.storeAsURL(FileUtil.getUrl(filePath), aStoreProperties);
+
+ return UnoRuntime.queryInterface(XSpreadsheetDocument.class,
+ unoApp.loadDocument(filePath));
+ }
+}