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));
+	}
+}