diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:06:44 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:06:44 +0000 |
commit | ed5640d8b587fbcfed7dd7967f3de04b37a76f26 (patch) | |
tree | 7a5f7c6c9d02226d7471cb3cc8fbbf631b415303 /qadevOOo/tests/java/ifc/table | |
parent | Initial commit. (diff) | |
download | libreoffice-upstream.tar.xz libreoffice-upstream.zip |
Adding upstream version 4:7.4.7.upstream/4%7.4.7upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | qadevOOo/tests/java/ifc/table/_CellProperties.java | 102 | ||||
-rw-r--r-- | qadevOOo/tests/java/ifc/table/_XAutoFormattable.java | 126 | ||||
-rw-r--r-- | qadevOOo/tests/java/ifc/table/_XCellRange.java | 143 | ||||
-rw-r--r-- | qadevOOo/tests/java/ifc/table/_XTableChart.java | 116 | ||||
-rw-r--r-- | qadevOOo/tests/java/ifc/table/_XTableColumns.java | 391 | ||||
-rw-r--r-- | qadevOOo/tests/java/ifc/table/_XTableRows.java | 130 |
6 files changed, 1008 insertions, 0 deletions
diff --git a/qadevOOo/tests/java/ifc/table/_CellProperties.java b/qadevOOo/tests/java/ifc/table/_CellProperties.java new file mode 100644 index 000000000..e3fac6674 --- /dev/null +++ b/qadevOOo/tests/java/ifc/table/_CellProperties.java @@ -0,0 +1,102 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.table; + +import lib.MultiPropertyTest; + +import com.sun.star.container.XNameContainer; +import com.sun.star.uno.AnyConverter; +import com.sun.star.uno.Type; +import com.sun.star.xml.AttributeData; + +/** +* Testing <code>com.sun.star.table.CellProperties</code> +* service properties : +* <ul> +* <li><code> CellStyle</code></li> +* <li><code> CellBackColor</code></li> +* <li><code> IsCellBackgroundTransparent</code></li> +* <li><code> NumberFormat</code></li> +* <li><code> ShadowFormat</code></li> +* <li><code> HoriJustify</code></li> +* <li><code> VertJustify</code></li> +* <li><code> Orientation</code></li> +* <li><code> CellProtection</code></li> +* <li><code> TableBorder</code></li> +* <li><code> IsTextWrapped</code></li> +* <li><code> RotateAngle</code></li> +* <li><code> RotateReference</code></li> +* </ul> <p> +* Properties testing is automated by <code>lib.MultiPropertyTest</code>. +* @see com.sun.star.table.CellProperties +*/ +public class _CellProperties extends MultiPropertyTest { + + + /** + * This property is tested with custom property tester which + * switches between 'Default' and 'Result' style names. + */ + public void _CellStyle() { + testProperty("CellStyle", new PropertyTester() { + @Override + protected Object getNewValue(String name, Object old) { + return "Default".equals(old) ? "Result" : "Default" ; + } + }) ; + } + + public void _UserDefinedAttributes() { + XNameContainer uda = null; + boolean res = false; + try { + uda = (XNameContainer) AnyConverter.toObject( + new Type(XNameContainer.class), + oObj.getPropertyValue("UserDefinedAttributes")); + AttributeData attr = new AttributeData(); + attr.Namespace = "http://www.sun.com/staroffice/apitest/Cellprop"; + attr.Type="CDATA"; + attr.Value="true"; + uda.insertByName("Cellprop:has-first-alien-attribute",attr); + uda.getElementNames(); + oObj.setPropertyValue("UserDefinedAttributes",uda); + uda = (XNameContainer) AnyConverter.toObject( + new Type(XNameContainer.class), + oObj.getPropertyValue("UserDefinedAttributes")); + uda.getElementNames(); + uda.getByName("Cellprop:has-first-alien-attribute"); + res = true; + } catch (com.sun.star.beans.UnknownPropertyException upe) { + log.println("Don't know the Property 'UserDefinedAttributes'"); + } catch (com.sun.star.lang.WrappedTargetException wte) { + log.println("WrappedTargetException while getting Property 'UserDefinedAttributes'"); + } catch (com.sun.star.container.NoSuchElementException nee) { + log.println("added Element isn't part of the NameContainer"); + } catch (com.sun.star.lang.IllegalArgumentException iae) { + log.println("IllegalArgumentException while getting Property 'UserDefinedAttributes'"); + } catch (com.sun.star.beans.PropertyVetoException pve) { + log.println("PropertyVetoException while getting Property 'UserDefinedAttributes'"); + } catch (com.sun.star.container.ElementExistException eee) { + log.println("ElementExistException while getting Property 'UserDefinedAttributes'"); + } + tRes.tested("UserDefinedAttributes",res); + } + +} // finish class _CellProperties + diff --git a/qadevOOo/tests/java/ifc/table/_XAutoFormattable.java b/qadevOOo/tests/java/ifc/table/_XAutoFormattable.java new file mode 100644 index 000000000..6473f17b7 --- /dev/null +++ b/qadevOOo/tests/java/ifc/table/_XAutoFormattable.java @@ -0,0 +1,126 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ +package ifc.table; + +import java.util.Random; + +import lib.MultiMethodTest; + +import com.sun.star.beans.XPropertySet; +import com.sun.star.container.XNameAccess; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.table.XAutoFormattable; +import com.sun.star.table.XCell; +import com.sun.star.table.XCellRange; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XInterface; + + +/** +* Testing <code>com.sun.star.table.XAutoFormattable</code> +* interface methods : +* <ul> +* <li><code> autoFormat()</code></li> +* </ul> <p> +* The component tested <b>must implement</b> interface +* <code>com.sun.star.table.XCellRange</code>. <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.table.XAutoFormattable +*/ +public class _XAutoFormattable extends MultiMethodTest { + public XAutoFormattable oObj = null; + + /** + * First 'Default' autoformat is set and a background of a cell + * is obtained. Then any other autoformat is set and background + * of a cell is obtained again.<p> + * Has <b> OK </b> status if backgrounds with different autoformat + * settings are differ. <p> + */ + public void _autoFormat() { + boolean bResult = true; + XMultiServiceFactory oMSF = tParam.getMSF(); + String name = "Default"; + + try { + oObj.autoFormat(name); // applying default format + + // getting current background of the cell + XCellRange cellRange = UnoRuntime.queryInterface( + XCellRange.class, oObj); + XCell oCell = cellRange.getCellByPosition(0, 0); + XPropertySet PS = UnoRuntime.queryInterface( + XPropertySet.class, oCell); + + Integer bkgrnd1; + try { + bkgrnd1 = (Integer) PS.getPropertyValue("CellBackColor"); + } catch (com.sun.star.beans.UnknownPropertyException e) { + bkgrnd1 = (Integer) PS.getPropertyValue("BackColor"); + } + + // getting formats names. + XInterface iFormats = (XInterface) oMSF.createInstance( + "com.sun.star.sheet.TableAutoFormats"); + XNameAccess formats = UnoRuntime.queryInterface( + XNameAccess.class, iFormats); + String[] names = formats.getElementNames(); + + // getting one random not default style name + Random rnd = new Random(); + + if (names.length > 1) { + while (name.equals("Default")) { + name = names[rnd.nextInt(names.length)]; + } + } else { + name = names[0]; + } + + log.println("Applying style " + name); + + + // applying style + oObj.autoFormat(name); + + // getting new cell's background. + Integer bkgrnd2; + try { + bkgrnd2 = (Integer) PS.getPropertyValue("CellBackColor"); + } catch (com.sun.star.beans.UnknownPropertyException e) { + bkgrnd2 = (Integer) PS.getPropertyValue("BackColor"); + } + + bResult &= !bkgrnd1.equals(bkgrnd2); + } catch (com.sun.star.uno.Exception e) { + log.println("Exception occurred :"); + e.printStackTrace(log); + bResult = false; + } + + tRes.tested("autoFormat()", bResult); + } + + /** + * Forces environment recreation. + */ + @Override + protected void after() { + disposeEnvironment(); + } +}
\ No newline at end of file diff --git a/qadevOOo/tests/java/ifc/table/_XCellRange.java b/qadevOOo/tests/java/ifc/table/_XCellRange.java new file mode 100644 index 000000000..08420e24f --- /dev/null +++ b/qadevOOo/tests/java/ifc/table/_XCellRange.java @@ -0,0 +1,143 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.table; + +import lib.MultiMethodTest; + +import com.sun.star.table.XCell; +import com.sun.star.table.XCellRange; + +/** +* Testing <code>com.sun.star.table.XCellRange</code> +* interface methods : +* <ul> +* <li><code> getCellByPosition()</code></li> +* <li><code> getCellRangeByPosition()</code></li> +* <li><code> getCellRangeByName()</code></li> +* </ul> <p> +* This test needs the following object relations : +* <ul> +* <li> <code>'ValidRange'</code> (of type <code>String</code>): +* cell range that can be defined by the object test instead of +* definition at this test ("<code>A1:A1</code>")</li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.table.XCellRange +*/ +public class _XCellRange extends MultiMethodTest { + public XCellRange oObj = null; + + /** + * First a cell get from valid position, second - from invalid. <p> + * Has <b> OK </b> status if in the first case not null value is + * returned and no exceptions are thrown, and in the second + * case <code>IndexOutOfBoundsException</code> is thrown. <p> + */ + public void _getCellByPosition() { + + boolean result = false; + + try { + XCell cell = oObj.getCellByPosition(0,0); + result = cell != null ; + log.println("Getting cell by position with a valid position ... OK"); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Exception occurred while getting cell by position with a valid position"); + e.printStackTrace(log); + result = false; + } + + try { + oObj.getCellByPosition(-1,1); + log.println("No Exception occurred while getting cell by position with invalid position"); + result &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Getting cell by position with an invalid position ... OK"); + result &= true; + } + + tRes.tested( "getCellByPosition()", result ); + + } // end getCellByPosition() + + /** + * A range is tried to obtain with valid name. <p> + * Has <b> OK </b> status if not null range is + * returned. <p> + */ + public void _getCellRangeByName() { + + boolean result = false; + + String valid = (String) tEnv.getObjRelation("ValidRange"); + if (valid == null ) valid = "A1:A1"; + XCellRange range = oObj.getCellRangeByName(valid); + result = range != null ; + log.println("Getting cellrange by name with a valid name ... OK"); + + tRes.tested( "getCellRangeByName()", result ); + + + } // end getCellRangeByName() + + /** + * First a range is tried to obtain with valid bounds, + * second - with invalid. <p> + * Has <b> OK </b> status if in the first case not null range is + * returned and no exceptions are thrown, and in the second + * case <code>IndexOutOfBoundsException</code> is thrown. <p> + */ + public void _getCellRangeByPosition() { + + boolean result = false; + + try { + XCellRange range = oObj.getCellRangeByPosition(0,0,0,0); + result = range != null; + log.println("Getting cellrange by Position with a valid position ... OK"); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Exception occurred while getting cellrange by position with a valid position"); + e.printStackTrace(log); + result = false; + } + + try { + oObj.getCellRangeByPosition(-1,0,-1,1); + log.println("No Exception occurred while getting cellrange by position with invalid position"); + result &= false; + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Getting cellrange by position with an invalid position ... OK"); + result &= true; + } + + tRes.tested( "getCellRangeByPosition()", result ); + + + } // end getCellRangeByPosition() + + /** + * Forces environment recreation. + */ + @Override + protected void after() { + disposeEnvironment(); + } + +} // finish class _XCellRange + diff --git a/qadevOOo/tests/java/ifc/table/_XTableChart.java b/qadevOOo/tests/java/ifc/table/_XTableChart.java new file mode 100644 index 000000000..1730d9f96 --- /dev/null +++ b/qadevOOo/tests/java/ifc/table/_XTableChart.java @@ -0,0 +1,116 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.table; + +import lib.MultiMethodTest; +import util.ValueComparer; + +import com.sun.star.table.CellRangeAddress; +import com.sun.star.table.XTableChart; + +/** +* Testing <code>com.sun.star.table.XTableChart</code> +* interface methods : +* <ul> +* <li><code> getHasColumnHeaders()</code></li> +* <li><code> setHasColumnHeaders()</code></li> +* <li><code> getHasRowHeaders()</code></li> +* <li><code> setHasRowHeaders()</code></li> +* <li><code> getRanges()</code></li> +* <li><code> setRanges()</code></li> +* </ul> <p> +* Test is <b> NOT </b> multithread compliant. <p> +* @see com.sun.star.table.XTableChart +*/ +public class _XTableChart extends MultiMethodTest { + + public XTableChart oObj = null; + + /** + * Sets the property to <code>false</code> and then check it. <p> + * Has <b> OK </b> status if the method returns <code>false</code>. <p> + */ + public void _getHasColumnHeaders() { + oObj.setHasColumnHeaders(false); + tRes.tested("getHasColumnHeaders()", !oObj.getHasColumnHeaders() ); + } // getHasColumnHeaders() + + /** + * Sets the property to <code>true</code> and then check it. <p> + * Has <b> OK </b> status if the method returns <code>true</code>. <p> + */ + public void _setHasColumnHeaders() { + oObj.setHasColumnHeaders(true); + tRes.tested("setHasColumnHeaders()", oObj.getHasColumnHeaders() ); + } // setHasColumnHeaders() + + /** + * Sets the property to <code>false</code> and then check it. <p> + * Has <b> OK </b> status if the method returns <code>false</code>. <p> + */ + public void _getHasRowHeaders() { + oObj.setHasRowHeaders(false); + tRes.tested("getHasRowHeaders()", !oObj.getHasRowHeaders() ); + } // getHasRowHeaders() + + /** + * Sets the property to <code>true</code> and then check it. <p> + * Has <b> OK </b> status if the method returns <code>true</code>. <p> + */ + public void _setHasRowHeaders() { + oObj.setHasRowHeaders(true); + tRes.tested("setHasRowHeaders()", oObj.getHasRowHeaders() ); + } // setHasRowHeaders() + + CellRangeAddress[] the_Ranges = null; + + /** + * Test calls the method and stores the range returned. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. <p> + */ + public void _getRanges() { + the_Ranges = oObj.getRanges(); + tRes.tested("getRanges()", the_Ranges != null ); + } // getRanges() + + /** + * Changes the first range in range array obtained by + * <code>getRanges</code> method, then set changed array. <p> + * Has <b> OK </b> status if range array get is the same as was + * set. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> getRanges() </code> : to have initial ranges </li> + * </ul> + */ + public void _setRanges() { + requiredMethod("getRanges()"); + CellRangeAddress[] tmpRanges = oObj.getRanges(); + tmpRanges[0].EndRow = 1; + oObj.setRanges(tmpRanges); + tRes.tested("setRanges()", ValueComparer.equalValue( + tmpRanges,oObj.getRanges())); + oObj.setRanges(the_Ranges); + } // getRanges() + +} // finish class _XTableChartsSupplier + + + diff --git a/qadevOOo/tests/java/ifc/table/_XTableColumns.java b/qadevOOo/tests/java/ifc/table/_XTableColumns.java new file mode 100644 index 000000000..d0d1b03bf --- /dev/null +++ b/qadevOOo/tests/java/ifc/table/_XTableColumns.java @@ -0,0 +1,391 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.table; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; + +import com.sun.star.table.XCell; +import com.sun.star.table.XCellRange; +import com.sun.star.table.XTableColumns; +import com.sun.star.text.XSimpleText; +import com.sun.star.uno.UnoRuntime; + +/** +* Testing <code>com.sun.star.table.XTableColumns</code> +* interface methods : +* <ul> +* <li><code> insertByIndex()</code></li> +* <li><code> removeByIndex()</code></li> +* </ul> <p> +* +* This test needs the following object relations : +* <ul> +* <li> <code>'XTableColumns.XCellRange'</code> : <code> +* com.sun.star.table.XCellRange</code> the cell range of +* columns.</li> +* <ul> <p> +* +* Test is multithread compliant. <p> +* @see com.sun.star.table.XTableColumns +*/ +public class _XTableColumns extends MultiMethodTest { + + public XTableColumns oObj = null; + private XCellRange xCellRange = null; + private int lastColumn = 0; + + @Override + public void before() { + xCellRange = (XCellRange) + tEnv.getObjRelation("XTableColumns.XCellRange") ; + + if (xCellRange == null) throw new + StatusException(Status.failed("Relation missing")); + + lastColumn = oObj.getCount() - 1 ; + } + + /** + * First a number of cells in cell range are filled with data. + * + * Then columns inserted to valid positions : 1 column at 1, + * 1 column at 0, 2 columns at 0. <p> + * + * Then columns inserted to invalid positions : position -1, + * the column after last, and 0 columns inserted. <p> + * + * Has <b> OK </b> status if for valid cases : + * <ul> + * <li> content of other cells are properly shifted </li> + * <li> inserted columns are empty </li> + * <li> number of columns increases (in case if it is not the whole + * spreadsheet) by proper number. </li> + * </ul> + * and for invalid cases exception is thrown. + */ + public void _insertByIndex() { + + boolean result = true; + int origCnt = oObj.getCount(); + + try { + log.println("Filling range ... "); + fillRange(xCellRange); + + log.println("Inserting 1 column at position 1 ..."); + oObj.insertByIndex(1,1); + + result &= checkColumn(0, 0); + result &= checkColumnEmpty(1); + result &= checkColumn(2, 1); + result &= checkColumn(3, 2); + result &= checkColumnEmpty(4); + + if (lastColumn < 200) { + result &= checkColumn(lastColumn + 1, lastColumn); + result &= oObj.getCount() == origCnt + 1; + } else { + result &= checkColumnEmpty(lastColumn); + } + + log.println("Inserting 1 column at position 0 ..."); + oObj.insertByIndex(0,1); + + result &= checkColumnEmpty(0); + result &= checkColumn(1, 0); + result &= checkColumnEmpty(2); + result &= checkColumn(3, 1); + result &= checkColumn(4, 2); + result &= checkColumnEmpty(5); + if (lastColumn < 200) { + result &= checkColumn(lastColumn + 2, lastColumn); + result &= oObj.getCount() == origCnt + 2; + } + + log.println("Inserting 2 columns at position 0 ..."); + oObj.insertByIndex(0,2); + + result &= checkColumnEmpty(0); + result &= checkColumnEmpty(1); + result &= checkColumnEmpty(2); + result &= checkColumn(3, 0); + result &= checkColumnEmpty(4); + result &= checkColumn(5, 1); + result &= checkColumn(6, 2); + result &= checkColumnEmpty(7); + if (lastColumn < 200) { + result &= checkColumn(lastColumn + 4, lastColumn); + } + + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + e.printStackTrace(log); + result = false; + } + + + // spreadsheet supports 256 columns and after inserting + // or removing a column their number remains the same + if (origCnt < 200) { + log.println("Checking that number of column increased."); + result &= oObj.getCount() == origCnt + 4; + log.println("Before: " + origCnt + ", After: " + oObj.getCount()); + } else { + log.println("Number of columns is " + origCnt + ",") ; + log.println("supposing that this is the whole spreadsheet and "); + log.println("number of columns should not change."); + } + + try { + oObj.insertByIndex(-1,1); + log.println("No Exception occurred while inserting column at -1"); + result &= false; + } catch (Exception e) { + log.println("Inserting column at Index -1 ... OK"); + result &= true; + } + + int cnt = oObj.getCount(); + try { + oObj.insertByIndex(cnt, 1); + log.println("No Exception occurred while inserting column at " + + cnt); + result &= false; + } catch (Exception e) { + log.println("Inserting column at Index " + cnt + " ... OK"); + result &= true; + } + + if (tEnv.getTestCase().getObjectName().equals("ScTableColumnsObj")) { + + try { + oObj.insertByIndex(0,0); + log.println("No Exception occurred while inserting 0 columns"); + result &= false; + } catch (Exception e) { + log.println("Inserting 0 columns ... OK"); + result &= true; + } + + } + + tRes.tested( "insertByIndex()", result ); + + } // end insertByIndex() + + /** + * Columns removed from valid positions : 1 column at 1, + * 1 column at 0, 2 columns at 0. <p> + * + * Then columns removed from invalid positions : position -1, + * the column after last, and 0 columns removed. <p> + * + * Has <b> OK </b> status if for valid cases : + * <ul> + * <li> content of other cells are properly shifted </li> + * <li> columns which are shifted left are empty </li> + * <li> number of columns decreases (in case if it is not the whole + * spreadsheet) by proper number. </li> + * </ul> + * and for invalid cases exception is thrown. + */ + public void _removeByIndex() { + executeMethod("insertByIndex()"); + + boolean result = true; + int origCnt = oObj.getCount(); + + try { + log.println("Filling range ... "); + + log.println("Removing 2 columns at position 0 ..."); + oObj.removeByIndex(0,2); + + result &= checkColumnEmpty(0); + result &= checkColumn(1, 0); + result &= checkColumnEmpty(2); + result &= checkColumn(3, 1); + result &= checkColumn(4, 2); + result &= checkColumnEmpty(5); + if (lastColumn < 200) { + result &= checkColumn(lastColumn + 2, lastColumn); + result &= oObj.getCount() == origCnt - 2; + } + + log.println("Removing 1 column at position 0 ..."); + oObj.removeByIndex(0,1); + + result &= checkColumn(0, 0); + result &= checkColumnEmpty(1); + result &= checkColumn(2, 1); + result &= checkColumn(3, 2); + result &= checkColumnEmpty(4); + if (lastColumn < 200) { + result &= checkColumn(lastColumn + 1, lastColumn); + result &= oObj.getCount() == origCnt - 3; + } + + log.println("Removing 1 column at position 1 ..."); + oObj.removeByIndex(1,1); + + result &= checkColumn(0, 0); + result &= checkColumn(1, 1); + result &= checkColumn(2, 2); + result &= checkColumnEmpty(3); + if (lastColumn < 200) { + result &= checkColumn(lastColumn, lastColumn); + } + + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + e.printStackTrace(log); + result = false; + } + + + // spreadsheet supports 256 columns and after inserting + // or removing a column their number remains the same + if (origCnt < 200) { + log.println("Checking that number of column increased."); + result &= oObj.getCount() == origCnt - 4; + log.println("Before: " + origCnt + ", After: " + oObj.getCount()); + } else { + log.println("Number of columns is " + origCnt + ",") ; + log.println("supposing that this is the whole spreadsheet and "); + log.println("number of columns should not change."); + } + + try { + oObj.removeByIndex(-1,1); + log.println("No Exception occurred while removing column at -1"); + result &= false; + } catch (Exception e) { + log.println("removing column at Index -1 ... OK"); + result &= true; + } + + int cnt = oObj.getCount(); + try { + oObj.removeByIndex(cnt, 1); + log.println("No Exception occurred while removing column at " + + cnt); + result &= false; + } catch (Exception e) { + log.println("Removing column at Index " + cnt + " ... OK"); + result &= true; + } + + if (tEnv.getTestCase().getObjectName().equals("ScTableColumnsObj")) { + try { + oObj.removeByIndex(0,0); + log.println("No Exception occurred while removing 0 columns"); + result &= false; + } catch (Exception e) { + log.println("removing 0 columns ... OK"); + result &= true; + } + } + + tRes.tested( "removeByIndex()", result ); + } // end removeByIndex() + + private void setCellText(XCell cell, String text) { + XSimpleText xText = UnoRuntime.queryInterface + (XSimpleText.class, cell) ; + xText.setString(text); + } + private String getCellText(XCell cell) { + XSimpleText xText = UnoRuntime.queryInterface + (XSimpleText.class, cell) ; + return xText.getString(); + } + + /** + * Fills the range with some data : two rows and 3 columns, and + * some columns are cleared. + * + * @param xRange Range to fill + * @throws IndexOutOfBoundsException if any errors occur during filling. + */ + private void fillRange(XCellRange xRange) + throws com.sun.star.lang.IndexOutOfBoundsException { + + for (int i = 0; i <= lastColumn && i < 3; i++) { + setCellText(xRange.getCellByPosition(i, 0), i + "a"); + setCellText(xRange.getCellByPosition(i, 1), i + "b"); + } + + for (int i = 3; i <= lastColumn && i < 10; i++) { + setCellText(xRange.getCellByPosition(i, 0), ""); + setCellText(xRange.getCellByPosition(i, 1), ""); + } + } + + /** + * Check the column (first two rows) if it has values with + * index specified. + * + * @param col Column to check + * @param idx What indexes must be in cells + * @return <code>true</code> if expected indexes are found, + * <code>false</code> otherwise. + * @throws IndexOutOfBoundsException + */ + private boolean checkColumn(int col, int idx) + throws com.sun.star.lang.IndexOutOfBoundsException { + + if (col >= oObj.getCount()) return true; + + String c1 = getCellText(xCellRange.getCellByPosition(col, 0)); + String c2 = getCellText(xCellRange.getCellByPosition(col, 1)); + + if (!((idx + "a").equals(c1) && (idx + "b").equals(c2))) { + + log.println("FAILED for column " + col + " and index " + idx + "(" + + c1 + "," + c2 + ")"); + return false ; + } + return true; + } + + /** + * Checks if the column (first two rows) has no data in its cells. + * + * @param col Column to check + * @return <code>true</code> if the column is empty, <code>false</code> + * if first two cells contains some strings. + * @throws IndexOutOfBoundsException + */ + private boolean checkColumnEmpty(int col) + throws com.sun.star.lang.IndexOutOfBoundsException { + + if (col >= oObj.getCount()) return true; + + String c1 = getCellText(xCellRange.getCellByPosition(col, 0)); + String c2 = getCellText(xCellRange.getCellByPosition(col, 1)); + if (!("".equals(c1) && "".equals(c2))) { + log.println("FAILED for column " + col + " is not empty (" + + c1 + "," + c2 + ")"); + return false ; + } + return true; + } + + } //finish class _XTableColumns + diff --git a/qadevOOo/tests/java/ifc/table/_XTableRows.java b/qadevOOo/tests/java/ifc/table/_XTableRows.java new file mode 100644 index 000000000..2f997860c --- /dev/null +++ b/qadevOOo/tests/java/ifc/table/_XTableRows.java @@ -0,0 +1,130 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package ifc.table; + +import com.sun.star.table.XCellRange; +import lib.MultiMethodTest; + +import com.sun.star.table.XTableRows; +import lib.Status; +import lib.StatusException; + +/** +* Testing <code>com.sun.star.table.XTableRows</code> +* interface methods : +* <ul> +* <li><code> insertByIndex()</code></li> +* <li><code> removeByIndex()</code></li> +* </ul> +*/ +public class _XTableRows extends MultiMethodTest { + + public XTableRows oObj = null; + public XCellRange range = null; + + @Override + public void before() { + range = (XCellRange) tEnv.getObjRelation("XTableRows.XCellRange"); + if (range==null) { + throw new StatusException(Status.failed("ObjectRelation missing")); + } + try { + range.getCellByPosition(0,0).setValue(17); + range.getCellByPosition(0,1).setValue(15); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Couldn't set value for Cell A1"); + } + } + + /** + * First a row inserted to valid position, then to invalid. <p> + * Has <b> OK </b> status if in the first case number of rows increases + * by 1, and in the second an exception is thrown. <p> + */ + public void _insertByIndex() { + + boolean result = true; + + requiredMethod("removeByIndex()"); + + oObj.getCount(); + log.println("Inserting row before first row"); + oObj.insertByIndex(0,1); + result &= checkCell(1,15); + if (checkCell(1,15)) log.println("... successful"); + + try { + oObj.insertByIndex(-1,1); + log.println("No Exception occurred while inserting row at -1"); + result &= false; + } catch (Exception e) { + log.println("Inserting row at Index -1 ... OK"); + result &= true; + } + + tRes.tested( "insertByIndex()", result ); + + } // end insertByIndex() + + /** + * First a row removed from valid position, then from invalid. <p> + * + * Has <b> OK </b> status if in the first case number of columns decreases + * by 1, and in the second an exception is thrown. <p> + */ + public void _removeByIndex() { + + boolean result = true; + + oObj.removeByIndex(0,1); + log.println("Removing first row"); + result &= checkCell(0,15); + if (checkCell(0,15)) log.println("... successful"); + + try { + oObj.removeByIndex(-1,1); + log.println("No Exception occurred while Removing row at -1"); + result &= false; + } catch (Exception e) { + log.println("Removing row at Index -1 ... OK"); + result &= true; + } + + tRes.tested( "removeByIndex()", result ); + } // end removeByIndex() + + public boolean checkCell(int row,double expected) { + double getting=0; + try { + getting = range.getCellByPosition(0,row).getValue(); + } catch (com.sun.star.lang.IndexOutOfBoundsException e) { + log.println("Couldn't set value for Cell A1"); + } + + boolean res = (getting==expected); + if (!res) { + log.println("Expected for row "+row+" was "+expected); + log.println("Getting for row "+row+" - "+getting); + log.println("=> FAILED"); + } + return res; + } + +} //finish class _XTableRows + |