summaryrefslogtreecommitdiff
path: root/qadevOOo/tests/java/ifc/sheet/_XSheetAuditing.java
diff options
context:
space:
mode:
Diffstat (limited to 'qadevOOo/tests/java/ifc/sheet/_XSheetAuditing.java')
-rw-r--r--qadevOOo/tests/java/ifc/sheet/_XSheetAuditing.java209
1 files changed, 209 insertions, 0 deletions
diff --git a/qadevOOo/tests/java/ifc/sheet/_XSheetAuditing.java b/qadevOOo/tests/java/ifc/sheet/_XSheetAuditing.java
new file mode 100644
index 000000000000..e630c5a926d5
--- /dev/null
+++ b/qadevOOo/tests/java/ifc/sheet/_XSheetAuditing.java
@@ -0,0 +1,209 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: _XSheetAuditing.java,v $
+ * $Revision: 1.4 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package ifc.sheet;
+
+import com.sun.star.beans.XPropertySet;
+import com.sun.star.drawing.XDrawPage;
+import com.sun.star.drawing.XDrawPageSupplier;
+import com.sun.star.drawing.XShape;
+import com.sun.star.sheet.ValidationType;
+import com.sun.star.sheet.XSheetAuditing;
+import com.sun.star.sheet.XSpreadsheet;
+import com.sun.star.table.CellAddress;
+import com.sun.star.table.XCell;
+import com.sun.star.text.XText;
+import com.sun.star.uno.UnoRuntime;
+import lib.MultiMethodTest;
+import lib.Status;
+import lib.StatusException;
+
+/**
+ *
+ */
+public class _XSheetAuditing extends MultiMethodTest {
+ public XSheetAuditing oObj = null;
+ CellAddress address = null;
+ CellAddress precedentAddress = null;
+ CellAddress dependentAddress = null;
+ XCell xAddress = null;
+ XCell xPrecedentAddress = null;
+ XCell xDependentAddress = null;
+ XDrawPage xDrawPage = null;
+ int elementCount = 0;
+
+ public void before() {
+ address = (CellAddress)tEnv.getObjRelation("XSheetAuditing.CellAddress");
+ precedentAddress = (CellAddress)tEnv.getObjRelation("XSheetAuditing.PrecedentCellAddress");
+ dependentAddress= (CellAddress)tEnv.getObjRelation("XSheetAuditing.DependentCellAddress");
+ if (address == null || precedentAddress == null || dependentAddress == null) {
+ throw new StatusException(Status.failed("Necessary CellAddress object relations not found."));
+ }
+
+ // get the draw page for checking the shapes
+ xDrawPage = (XDrawPage)tEnv.getObjRelation("XSheetAuditing.DrawPage");
+ if (xDrawPage == null) { // get from object
+ XDrawPageSupplier oDPS = (XDrawPageSupplier)
+ UnoRuntime.queryInterface(XDrawPageSupplier.class, oObj);
+ xDrawPage = (XDrawPage) oDPS.getDrawPage();
+ }
+ if (xDrawPage == null) {
+ throw new StatusException(Status.failed("'XSheetAuditing.DrawPage' object relation not found."));
+ }
+ if (xDrawPage.hasElements()) {
+ elementCount = xDrawPage.getCount();
+ }
+
+ // get a sheet for changing the cells
+ XSpreadsheet xSheet = (XSpreadsheet)tEnv.getObjRelation("XSheetAuditing.Spreadsheet");
+ if (xSheet == null) // query on ther object
+ xSheet = (XSpreadsheet)UnoRuntime.queryInterface(XSpreadsheet.class, oObj);
+ if (xSheet == null)
+ throw new StatusException(Status.failed("'XSheetAuditing.Spreadsheet' object relation not found."));
+ try {
+ xAddress = xSheet.getCellByPosition(address.Column, address.Row);
+ xDependentAddress = xSheet.getCellByPosition(dependentAddress.Column, dependentAddress.Row);
+ xPrecedentAddress = xSheet.getCellByPosition(precedentAddress.Column, precedentAddress.Row);
+ }
+ catch(com.sun.star.lang.IndexOutOfBoundsException e) {
+ throw new StatusException(Status.failed("Invalid cell addresses in object relations."));
+ }
+ }
+
+ public void _clearArrows() {
+ requiredMethod("hideDependents()");
+ boolean erg = false;
+ oObj.showDependents(address);
+ oObj.showPrecedents(address);
+ erg = hasRightAmountOfShapes(3);
+ oObj.clearArrows();
+ erg &= hasRightAmountOfShapes(0);
+ tRes.tested("clearArrows()", erg);
+ }
+
+ public void _hideDependents() {
+ requiredMethod("showDependents()");
+ oObj.hideDependents(address);
+ tRes.tested("hideDependents()", hasRightAmountOfShapes(0));
+ }
+
+ public void _hidePrecedents() {
+ requiredMethod("showPrecedents()");
+// requiredMethod("showPrecedents()");
+ oObj.hidePrecedents(address);
+ tRes.tested("hidePrecedents()", hasRightAmountOfShapes(0));
+ }
+
+ public void _showDependents() {
+ requiredMethod("hidePrecedents()");
+ oObj.showDependents(address);
+ tRes.tested("showDependents()", hasRightAmountOfShapes(1));
+ }
+
+ public void _showErrors() {
+ requiredMethod("clearArrows()");
+ // construct an error: square root from -3
+ xPrecedentAddress.setValue(-9);
+ String cellAddress = new String(new byte[]{(byte)(precedentAddress.Column + 65)}) + (precedentAddress.Row+1);
+ xAddress.setFormula("=SQRT(" + cellAddress + ")");
+ XText xText = (XText)UnoRuntime.queryInterface(XText.class, xAddress);
+ // correct error in cell:
+ String error = xText.getString();
+ boolean erg = error.equals("Err:502");
+ log.println("Content: " + error);
+ oObj.showErrors(dependentAddress);
+ erg &= hasRightAmountOfShapes(2);
+ tRes.tested("showErrors()", erg);
+ }
+
+ public void _showInvalid() {
+ requiredMethod("showErrors()");
+ boolean result = true;
+ // insert a value
+ xAddress.setValue(2.5);
+ try {
+ // add a validitation to a cell: only whole numbers are allowed
+ XPropertySet xPropertySet = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xAddress);
+ Object o = xPropertySet.getPropertyValue("Validation");
+ XPropertySet xValidation = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, o);
+ xValidation.setPropertyValue("Type", ValidationType.WHOLE);
+ xPropertySet.setPropertyValue("Validation", xValidation);
+ // test
+ oObj.showInvalid();
+ result = hasRightAmountOfShapes(1);
+ oObj.clearArrows();
+ result &= hasRightAmountOfShapes(0);
+ // revoke the validitation to a cell
+ xValidation.setPropertyValue("Type", ValidationType.ANY);
+ xPropertySet.setPropertyValue("Validation", xValidation);
+ // test again
+ oObj.showInvalid();
+ result &= hasRightAmountOfShapes(0);
+ }
+ catch(com.sun.star.uno.Exception e) {
+ e.printStackTrace((java.io.PrintWriter)log);
+ result = false;
+ }
+
+ tRes.tested("showInvalid()", result);
+ }
+
+ public void _showPrecedents() {
+ oObj.showPrecedents(address);
+ tRes.tested("showPrecedents()", hasRightAmountOfShapes(2));
+ }
+
+ /**
+ * Check if the amount of shapes is the right one after displaying that stuff
+ * 2do improve this: check taht the shapes are the correct ones -> convwatch
+ * @desiredValue That's the amount of shapes that have to be here.
+ * @return True, if the actual count of shapes is the same
+ */
+ private boolean hasRightAmountOfShapes(int desiredValue) {
+ int newCount = xDrawPage.getCount();
+ if (newCount != elementCount + desiredValue) {
+ return false;
+ }
+ else {
+ if (desiredValue >= 0) {
+ for (int i=elementCount; i<newCount; i++) {
+ try {
+ Object o = xDrawPage.getByIndex(i);
+ XShape xShape = (XShape)UnoRuntime.queryInterface(XShape.class, o);
+ System.out.println("Shape Type: " + xShape.getShapeType());
+ }
+ catch(com.sun.star.uno.Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+ return true;
+ }
+}