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/27 09:24:26 UTC
svn commit: r1377587 - in /incubator/ooo/trunk/main/test/testuno/source:
testcase/uno/sc/sheet/SheetBasicTest.java testlib/uno/SCUtil.java
Author: liuzhe
Date: Mon Aug 27 07:24:25 2012
New Revision: 1377587
URL: http://svn.apache.org/viewvc?rev=1377587&view=rev
Log:
#120655 - [testUNO patch]Tab color/Show Hide sheet/Link sheet
Patch by: Terry Yang <po...@hotmail.com>
Review by: Liu Zhe <al...@gmail.com>
Modified:
incubator/ooo/trunk/main/test/testuno/source/testcase/uno/sc/sheet/SheetBasicTest.java
incubator/ooo/trunk/main/test/testuno/source/testlib/uno/SCUtil.java
Modified: 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=1377587&r1=1377586&r2=1377587&view=diff
==============================================================================
--- incubator/ooo/trunk/main/test/testuno/source/testcase/uno/sc/sheet/SheetBasicTest.java (original)
+++ incubator/ooo/trunk/main/test/testuno/source/testcase/uno/sc/sheet/SheetBasicTest.java Mon Aug 27 07:24:25 2012
@@ -28,8 +28,13 @@ import org.junit.Test;
import org.openoffice.test.common.FileUtil;
import org.openoffice.test.common.Testspace;
import org.openoffice.test.uno.UnoApp;
-
+import testlib.uno.SCUtil;
+import com.sun.star.beans.Property;
+import com.sun.star.beans.PropertyAttribute;
import com.sun.star.beans.PropertyValue;
+import com.sun.star.beans.XPropertySet;
+import com.sun.star.beans.XPropertySetInfo;
+import com.sun.star.container.XEnumerationAccess;
import com.sun.star.container.XIndexAccess;
import com.sun.star.container.XNamed;
import com.sun.star.frame.XModel;
@@ -38,12 +43,18 @@ 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.SheetLinkMode;
+import com.sun.star.sheet.XCalculatable;
+import com.sun.star.sheet.XExternalDocLink;
+import com.sun.star.sheet.XExternalDocLinks;
+import com.sun.star.sheet.XSheetLinkable;
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;
+import com.sun.star.util.XRefreshable;
public class SheetBasicTest {
UnoApp unoApp = new UnoApp();
@@ -77,91 +88,73 @@ public class SheetBasicTest {
public void insertRenameDeleteSheet() throws Exception {
// Insert a sheet named aa after first sheet
String sheetname = "aa";
- scDocument = (XSpreadsheetDocument) UnoRuntime.queryInterface(
- XSpreadsheetDocument.class, scComponent);
+ scDocument = SCUtil.getSCDocument(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);
+ XSpreadsheet newSpreadSheet = SCUtil.getSCSheetByIndex(scDocument,
+ (short) 1);
+ SCUtil.setCurrentSheet(scDocument, newSpreadSheet);
// get the new speadsheet name
- XNamed xsheetname = (XNamed) UnoRuntime.queryInterface(XNamed.class,
- newSpreadSheet);
- assertEquals("actual should equals aa", sheetname, xsheetname.getName());
+ assertEquals("actual should equals aa", sheetname,
+ SCUtil.getSCSheetNameByIndex(scDocument, (short) 1));
// Change the Spreadsheet name
String changedname = "SpeadsheetAfterChange";
- xsheetname.setName(changedname);
+ SCUtil.setSCSheetNameByIndex(scDocument, (short) 1, changedname);
// Save and reload document
- reloadSpreadsheet("TestSpreadsheet.xls");
+ SCUtil.saveFileAs(scComponent, "TestSpreadsheet", "ods");
+ XSpreadsheetDocument scDocumentTemp = SCUtil.reloadFile(unoApp,
+ scDocument, "TestSpreadsheet.ods");
+
+ scDocument = scDocumentTemp;
+ String sheetnameaftermove = SCUtil.getSCSheetNameByIndex(scDocument,
+ (short) 1);
// Verify the changed Spreadsheet name
assertEquals("actual should equals SpeadsheetAfterChange", changedname,
- xsheetname.getName());
+ sheetnameaftermove);
- spreadsheets.removeByName(changedname);
+ scDocument.getSheets().removeByName(changedname);
assertFalse("actual should equals false",
spreadsheets.hasByName(changedname));
-
+ SCUtil.save(scDocumentTemp);
}
@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");
+ scDocument = SCUtil.getSCDocument(scComponent);
+ String souceSheetName = "sourcesheet";
+ SCUtil.setSCSheetNameByIndex(scDocument, (short) 0, souceSheetName);
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" }, };
+ XSpreadsheet sourceSpreadSheet = SCUtil.getSCSheetByName(scDocument,
+ souceSheetName);
// 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, "");
- }
- }
-
+ SCUtil.setTextToCellRange(sourceSpreadSheet, 0, 0, 5, 2, stringValues);
// copy the sheet from sourcesheet to copysheet
String newcopysheet = "copysheet";
- spreadsheets.copyByName(xsheetname.getName(), newcopysheet, (short) 2);
+ XSpreadsheets spreadsheets = scDocument.getSheets();
+ spreadsheets.copyByName(souceSheetName, 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());
- }
- }
+ SCUtil.saveFileAs(scComponent, "TestCopysheet", "xls");
+ XSpreadsheetDocument scDocumentTemp = SCUtil.reloadFile(unoApp,
+ scDocument, "TestCopysheet.xls");
+ scDocument = scDocumentTemp;
+
+ XSpreadsheet copysheet = SCUtil
+ .getSCSheetByIndex(scDocument, (short) 2);
+ String[][] CopystringValues = SCUtil.getTextFromCellRange(copysheet, 0,
+ 0, 5, 2);
+ assertArrayEquals("Expect string value should be stringValues",
+ stringValues, CopystringValues);
}
@@ -169,110 +162,318 @@ public class SheetBasicTest {
public void movesheet() throws Exception {
// new sc document
- scDocument = (XSpreadsheetDocument) UnoRuntime.queryInterface(
- XSpreadsheetDocument.class, scComponent);
+ scDocument = SCUtil.getSCDocument(scComponent);
+ XSpreadsheets spreadsheets = scDocument.getSheets();
// 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);
+ SCUtil.setSCSheetNameByIndex(scDocument, (short) 0, 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, "");
- }
- }
+ XSpreadsheet movesheet = SCUtil
+ .getSCSheetByIndex(scDocument, (short) 0);
+ SCUtil.setTextToCellRange(movesheet, 0, 0, 5, 2, stringValues);
// 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);
+ String secondSheetNameBeforeMove = SCUtil.getSCSheetNameByIndex(
+ scDocument, (short) 1);
// move the first sheet
spreadsheets.moveByName(sheetname, (short) 2);
// Save and reload document
- reloadSpreadsheet("Testmovesheet.xls");
+ SCUtil.saveFileAs(scComponent, "Testmovesheet", "xls");
+ XSpreadsheetDocument scDocumentTemp = SCUtil.reloadFile(unoApp,
+ scDocument, "Testmovesheet.xls");
+ scDocument = scDocumentTemp;
// 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);
+ String firstsheetnameAfterMove = SCUtil.getSCSheetNameByIndex(
+ scDocument, (short) 0);
assertEquals("Expect result should be Sheet2",
- secondSheetNameBeforeMove.getName(),
- xfirstsheetnameAfterMove.getName());
+ secondSheetNameBeforeMove, firstsheetnameAfterMove);
// 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);
+ String sheetnameAfterMove = SCUtil.getSCSheetNameByIndex(scDocument,
+ (short) 1);
assertEquals("Expect result should be sourcesheet", sheetname,
- xsheetnameAfterMove.getName());
+ sheetnameAfterMove);
// 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());
- }
- }
+ XSpreadsheet sheetaftermove = SCUtil.getSCSheetByIndex(scDocument,
+ (short) 1);
+ String[][] stringValuesaftermove = SCUtil.getTextFromCellRange(
+ sheetaftermove, 0, 0, 5, 2);
+
+ assertArrayEquals("Expect result should be stringValues", stringValues,
+ stringValuesaftermove);
}
- // 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);
- }
+ @Test
+ public void hideShowSheet() throws Exception {
+ // Insert a sheet named hide sheet after first sheet
+ String sheetname = "hide sheet";
+ scDocument = SCUtil.getSCDocument(scComponent);
+ XSpreadsheets spreadsheets = scDocument.getSheets();
+ spreadsheets.insertNewByName(sheetname, (short) 1);
+
+ // active the sheet second sheet "hide sheet"
+ XSpreadsheet secondSpreadSheet = SCUtil.getSCSheetByIndex(scDocument,
+ (short) 1);
+ SCUtil.setCurrentSheet(scDocument, secondSpreadSheet);
+ // get second sheet name and verify it should be "hide sheet"
+ assertEquals("expect active sheet name will be hide sheet", sheetname,
+ SCUtil.getSCSheetNameByIndex(scDocument, (short) 1));
+
+ // hide the sheet you insert
+ XPropertySet sheetPropertySet = (XPropertySet) UnoRuntime
+ .queryInterface(XPropertySet.class, secondSpreadSheet);
+ boolean isvisiable = false;
+ sheetPropertySet.setPropertyValue("IsVisible", isvisiable);
+
+ // Save and reload document
+ SCUtil.saveFileAs(scComponent, "Testhideshowsheet", "xls");
+ XSpreadsheetDocument scDocumentTemp = SCUtil.reloadFile(unoApp,
+ scDocument, "Testhideshowsheet.xls");
+ scDocument = scDocumentTemp;
+
+ // get the active sheet name after hide sheet, it should be Sheet2
+ String sheet2Name = SCUtil.getSCSheetNameByIndex(scDocument, (short) 2);
+ String activesheetname = SCUtil.getSCActiveSheetName(scDocument);
+ assertEquals("Expect sheet name should be Sheet2", sheet2Name,
+ activesheetname);
+
+ // show sheet "hide sheet"
+ sheetPropertySet = (XPropertySet) UnoRuntime.queryInterface(
+ XPropertySet.class,
+ SCUtil.getSCSheetByIndex(scDocument, (short) 1));
+ isvisiable = true;
+ sheetPropertySet.setPropertyValue("IsVisible", isvisiable);
+
+ // active sheet "hide sheet"
+ secondSpreadSheet = SCUtil.getSCSheetByIndex(scDocument, (short) 1);
+ SCUtil.setCurrentSheet(scDocument, secondSpreadSheet);
+
+ // Get current active sheet name, verify it same as "hide sheet"
+ String currentactivesheetname = SCUtil.getSCActiveSheetName(scDocument);
+ assertEquals("Expect active sheet name is hidesheet", sheetname,
+ currentactivesheetname);
+ SCUtil.save(scDocument);
}
- // 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);
+ @Test
+ public void sheetColor() throws Exception {
+ // get first sheet propertyset
+ scDocument = SCUtil.getSCDocument(scComponent);
+ XSpreadsheets spreadsheets = scDocument.getSheets();
+ XSpreadsheet firstSpreadSheet = SCUtil.getSCSheetByIndex(scDocument,
+ (short) 0);
+ XPropertySet sheet1PropertySet = (XPropertySet) UnoRuntime
+ .queryInterface(XPropertySet.class, firstSpreadSheet);
+
+ // Set tabcolor to 111
+ sheet1PropertySet.setPropertyValue("TabColor", 111);
+
+ // copy the color sheet to new sheet
+ spreadsheets.copyByName(
+ SCUtil.getSCSheetNameByIndex(scDocument, (short) 0),
+ "newsheet", (short) 3);
+
+ // Save and reopen the document
+ SCUtil.saveFileAs(scComponent, "Testcolorsheet", "ods");
+ XSpreadsheetDocument scDocumentTemp = SCUtil.reloadFile(unoApp,
+ scDocument, "Testcolorsheet.ods");
+ scDocument = scDocumentTemp;
+
+ // Get first sheet color
+ sheet1PropertySet = (XPropertySet) UnoRuntime.queryInterface(
+ XPropertySet.class,
+ SCUtil.getSCSheetByIndex(scDocument, (short) 0));
+ int firstSheetcolorid = (Integer) sheet1PropertySet
+ .getPropertyValue("TabColor");
+
+ // Get the copyed sheet color
+ XPropertySet newsheetPropertySet = (XPropertySet) UnoRuntime
+ .queryInterface(XPropertySet.class,
+ SCUtil.getSCSheetByIndex(scDocument, (short) 3));
+ int copySheetcolorid = (Integer) newsheetPropertySet
+ .getPropertyValue("TabColor");
+
+ // Verify first sheet color changed successfully
+ assertEquals("Expect color should be 111", 111, firstSheetcolorid);
+
+ // Verify first sheet color same as copy sheet color
+ assertEquals("Expect color should be 111", firstSheetcolorid,
+ copySheetcolorid);
+ }
+
+ @Test
+ public void insertSheetFromfile() throws Exception {
+ // New a document source.xls, add value to 3 sheet
+ scDocument = SCUtil.getSCDocument(scComponent);
+ XSpreadsheets spreadsheets = scDocument.getSheets();
+ XSpreadsheet firstSheet = SCUtil.getSCSheetByIndex(scDocument,
+ (short) 0);
+ XSpreadsheet secondSheet = SCUtil.getSCSheetByIndex(scDocument,
+ (short) 1);
+ XSpreadsheet thirdSheet = SCUtil.getSCSheetByIndex(scDocument,
+ (short) 2);
+ SCUtil.setFormulaToCell(firstSheet, 1, 2, "=2*2");
+ SCUtil.setFormulaToCell(secondSheet, 1, 2, "=2*2");
+ SCUtil.setFormulaToCell(thirdSheet, 1, 2, "=2*2");
+
+ // Save and close this document
+ SCUtil.saveFileAs(scComponent, "source", "xls");
+ SCUtil.closeFile(scDocument);
+
+ // get source document URL
+ String SourcestoreUrl = Testspace.getUrl("output/" + "source" + "."
+ + "xls");
+
+ // New a document
+ scComponent = unoApp.newDocument("scalc");
+ scDocument = SCUtil.getSCDocument(scComponent);
+ spreadsheets = scDocument.getSheets();
+ // Insert firstexternalsheet sheet, link with Sheet1 in source document
+ // and the link mode is NORMAL
+ spreadsheets.insertNewByName("firstexternalsheet", (short) 3);
+ XSpreadsheet firstexternalsheet = SCUtil.getSCSheetByIndex(scDocument,
+ (short) 3);
+ XSheetLinkable xfirstSheetLinkable = (XSheetLinkable) UnoRuntime
+ .queryInterface(XSheetLinkable.class, firstexternalsheet);
+ xfirstSheetLinkable.link(SourcestoreUrl, "", "MS Excel 97", "",
+ SheetLinkMode.NORMAL);
+
+ // Insert secondexternalsheet sheet, link with Sheet2 in source document
+ // and the link mode is VALUE
+ spreadsheets.insertNewByName("secondexternalsheet", (short) 4);
+ XSpreadsheet secondexternalsheet = SCUtil.getSCSheetByIndex(scDocument,
+ (short) 4);
+ XSheetLinkable xsecondSheetLinkable = (XSheetLinkable) UnoRuntime
+ .queryInterface(XSheetLinkable.class, secondexternalsheet);
+ xsecondSheetLinkable.link(SourcestoreUrl, "Sheet2", "MS Excel 97", "",
+ SheetLinkMode.VALUE);
+
+ // Insert secondexternalsheet sheet, link with Sheet2 in source document
+ // and the link mode is NONE
+ spreadsheets.insertNewByName("thirdexternalsheet", (short) 5);
+ XSpreadsheet thirdexternalsheet = SCUtil.getSCSheetByIndex(scDocument,
+ (short) 5);
+ XSheetLinkable xthirdSheetLinkable = (XSheetLinkable) UnoRuntime
+ .queryInterface(XSheetLinkable.class, thirdexternalsheet);
+ xthirdSheetLinkable.link(SourcestoreUrl, "Sheet3", "MS Excel 97", "",
+ SheetLinkMode.NONE);
+
+ // Verify firstexternalsheet
+ assertEquals("Expect formula should be =2*2", "=2*2",
+ SCUtil.getFormulaFromCell(firstexternalsheet, 1, 2));
+ assertEquals("Expect formula result should be 4", "4",
+ SCUtil.getTextFromCell(firstexternalsheet, 1, 2));
+
+ // Verify secondexternalsheet
+ assertEquals("Expect formula should be 4", "4",
+ SCUtil.getFormulaFromCell(secondexternalsheet, 1, 2));
+ assertEquals("Expect formula result should be 4", "4",
+ SCUtil.getTextFromCell(secondexternalsheet, 1, 2));
+
+ // Verify thirdexternalsheet
+ assertEquals("Expect formula should be blank", "",
+ SCUtil.getFormulaFromCell(thirdexternalsheet, 1, 2));
+ assertEquals("Expect formula result should be blank", "",
+ SCUtil.getTextFromCell(thirdexternalsheet, 1, 2));
+
+ // save document and verify the linked sheet again
+ SCUtil.saveFileAs(scComponent, "linked", "ods");
+ XSpreadsheetDocument tempscDocument = SCUtil.reloadFile(unoApp,
+ scDocument, "linked.ods");
+ scDocument = tempscDocument;
+ firstexternalsheet = SCUtil.getSCSheetByIndex(scDocument, (short) 3);
+ secondexternalsheet = SCUtil.getSCSheetByIndex(scDocument, (short) 4);
+ thirdexternalsheet = SCUtil.getSCSheetByIndex(scDocument, (short) 5);
+
+ // Verify firstexternalsheet
+ assertEquals("Expect formula should be =2*2", "=2*2",
+ SCUtil.getFormulaFromCell(firstexternalsheet, 1, 2));
+ assertEquals("Expect formula result should be 4", "4",
+ SCUtil.getTextFromCell(firstexternalsheet, 1, 2));
+
+ // Verify secondexternalsheet
+ assertEquals("Expect formula should be 4", "4",
+ SCUtil.getFormulaFromCell(secondexternalsheet, 1, 2));
+ assertEquals("Expect formula result should be 4", "4",
+ SCUtil.getTextFromCell(secondexternalsheet, 1, 2));
+
+ // Verify thirdexternalsheet
+ assertEquals("Expect formula should be blank", "",
+ SCUtil.getFormulaFromCell(thirdexternalsheet, 1, 2));
+ assertEquals("Expect formula result should be blank", "",
+ SCUtil.getTextFromCell(thirdexternalsheet, 1, 2));
+
+ //save and close document
+ SCUtil.save(scDocument);
+ SCUtil.closeFile(scDocument);
+
+ //Open souce document and change the value in souce document
+ XSpreadsheetDocument sourcescDocument = SCUtil.reloadFile(unoApp,
+ scDocument, "source.xls");
+ firstSheet = SCUtil.getSCSheetByIndex(sourcescDocument, (short) 0);
+ secondSheet = SCUtil.getSCSheetByIndex(sourcescDocument, (short) 1);
+ thirdSheet = SCUtil.getSCSheetByIndex(sourcescDocument, (short) 2);
+ SCUtil.setFormulaToCell(firstSheet, 1, 2, "=3*3");
+ SCUtil.setFormulaToCell(secondSheet, 1, 2, "=3*3");
+ SCUtil.setFormulaToCell(thirdSheet, 1, 2, "=3*3");
+ SCUtil.save(sourcescDocument);
+ SCUtil.closeFile(sourcescDocument);
+
+ //Open link document
+ tempscDocument = SCUtil.reloadFile(unoApp, scDocument, "linked.ods");
+ scDocument = tempscDocument;
+ spreadsheets = scDocument.getSheets();
+
+ firstexternalsheet = SCUtil.getSCSheetByIndex(scDocument, (short) 3);
+ secondexternalsheet = SCUtil.getSCSheetByIndex(scDocument, (short) 4);
+ thirdexternalsheet = SCUtil.getSCSheetByIndex(scDocument, (short) 5);
+
+ //get Object SheetLinks for document
+ XPropertySet sheetpropertyset = (XPropertySet) UnoRuntime
+ .queryInterface(XPropertySet.class, scDocument);
+ Object sheetLinks = sheetpropertyset.getPropertyValue("SheetLinks");
+
+ XIndexAccess xsheetlinks = (XIndexAccess) UnoRuntime.queryInterface(
+ XIndexAccess.class, sheetLinks);
+
+ //Refresh all links
+ for (int i = 0; i < xsheetlinks.getCount(); i++) {
+ Object sheetlink = xsheetlinks.getByIndex(i);
+ XRefreshable xsheetRefreshable = (XRefreshable) UnoRuntime
+ .queryInterface(XRefreshable.class, sheetlink);
+ xsheetRefreshable.refresh();
+ }
+
+ // Verify firstexternalsheet
+ assertEquals("Expect formula should be =3*3", "=3*3",
+ SCUtil.getFormulaFromCell(firstexternalsheet, 1, 2));
+ assertEquals("Expect formula result should be 9", "9",
+ SCUtil.getTextFromCell(firstexternalsheet, 1, 2));
+
+ // Verify secondexternalsheet
+ assertEquals("Expect formula should be 9", "9",
+ SCUtil.getFormulaFromCell(secondexternalsheet, 1, 2));
+ assertEquals("Expect formula result should be 9", "9",
+ SCUtil.getTextFromCell(secondexternalsheet, 1, 2));
+
+ // Verify thirdexternalsheet
+ assertEquals("Expect formula should be blank", "",
+ SCUtil.getFormulaFromCell(thirdexternalsheet, 1, 2));
+ assertEquals("Expect formula result should be blank", "",
+ SCUtil.getTextFromCell(thirdexternalsheet, 1, 2));
+
+ //Save the document before close
+ SCUtil.save(scDocument);
- return UnoRuntime.queryInterface(XSpreadsheetDocument.class,
- unoApp.loadDocument(filePath));
}
+
}
Modified: incubator/ooo/trunk/main/test/testuno/source/testlib/uno/SCUtil.java
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/test/testuno/source/testlib/uno/SCUtil.java?rev=1377587&r1=1377586&r2=1377587&view=diff
==============================================================================
--- incubator/ooo/trunk/main/test/testuno/source/testlib/uno/SCUtil.java (original)
+++ incubator/ooo/trunk/main/test/testuno/source/testlib/uno/SCUtil.java Mon Aug 27 07:24:25 2012
@@ -31,6 +31,7 @@ import org.openoffice.test.uno.UnoApp;
import com.sun.star.beans.PropertyValue;
import com.sun.star.beans.XPropertySet;
import com.sun.star.container.XIndexAccess;
+import com.sun.star.container.XNamed;
import com.sun.star.frame.XController;
import com.sun.star.frame.XModel;
import com.sun.star.frame.XStorable;
@@ -109,6 +110,50 @@ public class SCUtil {
}
/**
+ * Get sheet name by sheet index
+ *
+ * @param xSpreadsheetDocument
+ * @param index
+ * (Short) 0,1,2,...
+ * @return
+ * @throws Exception
+ */
+ public static String getSCSheetNameByIndex(
+ XSpreadsheetDocument xSpreadsheetDocument, short index)
+ throws Exception {
+ XSpreadsheets xSpreadsheets = xSpreadsheetDocument.getSheets();
+ XIndexAccess xIndexAccess = (XIndexAccess) UnoRuntime.queryInterface(
+ XIndexAccess.class, xSpreadsheets);
+ XSpreadsheet xSpreadsheet = (XSpreadsheet) UnoRuntime.queryInterface(
+ XSpreadsheet.class, xIndexAccess.getByIndex(index));
+ XNamed xsheetname = (XNamed) UnoRuntime.queryInterface(XNamed.class,
+ xSpreadsheet);
+ return xsheetname.getName();
+ }
+
+ /**
+ * Set sheet name by sheet index
+ *
+ * @param xSpreadsheetDocument
+ * @param index
+ * (Short) 0,1,2,...
+ * @return
+ * @throws Exception
+ */
+ public static void setSCSheetNameByIndex(
+ XSpreadsheetDocument xSpreadsheetDocument, short index,
+ String sheetname) throws Exception {
+ XSpreadsheets xSpreadsheets = xSpreadsheetDocument.getSheets();
+ XIndexAccess xIndexAccess = (XIndexAccess) UnoRuntime.queryInterface(
+ XIndexAccess.class, xSpreadsheets);
+ XSpreadsheet xSpreadsheet = (XSpreadsheet) UnoRuntime.queryInterface(
+ XSpreadsheet.class, xIndexAccess.getByIndex(index));
+ XNamed xsheetname = (XNamed) UnoRuntime.queryInterface(XNamed.class,
+ xSpreadsheet);
+ xsheetname.setName(sheetname);
+ }
+
+ /**
* Get rows object
* @param xSpreadsheet
* @return
@@ -358,6 +403,26 @@ public class SCUtil {
}
/**
+ * Get sheet object by sheet index
+ *
+ * @param xSpreadsheetDocument
+ * @return
+ * @throws Exception
+ */
+ public static String getSCActiveSheetName(
+ XSpreadsheetDocument xSpreadsheetDocument) throws Exception {
+ XModel xSpreadsheetModel = (XModel) UnoRuntime.queryInterface(
+ XModel.class, xSpreadsheetDocument);
+ XSpreadsheetView xSpeadsheetView = (XSpreadsheetView) UnoRuntime
+ .queryInterface(XSpreadsheetView.class,
+ xSpreadsheetModel.getCurrentController());
+ XSpreadsheet activesheet = xSpeadsheetView.getActiveSheet();
+ XNamed activesheetName = (XNamed) UnoRuntime.queryInterface(
+ XNamed.class, activesheet);
+ return activesheetName.getName();
+ }
+
+ /**
* Set value of specific property from a cell
* @param xCell
* @param propName
@@ -418,6 +483,22 @@ public class SCUtil {
}
/**
+ * Save file after open file.
+ *
+ * @param xSpreadsheetDocument
+ * @throws Exception
+ */
+ public static void save(XSpreadsheetDocument xSpreadsheetDocument)
+ throws Exception {
+
+ XStorable scStorable = (XStorable) UnoRuntime.queryInterface(
+ XStorable.class, xSpreadsheetDocument);
+ scStorable.store();
+
+ }
+
+
+ /**
* Close specific opening spreadsheet file which has been saved
* @param xSpreadsheetDocument
* @throws Exception