poi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cedricwal...@apache.org
Subject svn commit: r1514812 - in /poi/trunk: src/java/org/apache/poi/ss/formula/ src/testcases/org/apache/poi/ss/formula/functions/ test-data/spreadsheet/
Date Fri, 16 Aug 2013 17:35:17 GMT
Author: cedricwalter
Date: Fri Aug 16 17:35:16 2013
New Revision: 1514812

URL: http://svn.apache.org/r1514812
Log:
Bug 54720: Support for Row/Col Area Range like 8:8 or H:H

Added:
    poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java
    poi/trunk/test-data/spreadsheet/IndirectFunctionTestCaseData.xls   (with props)
Modified:
    poi/trunk/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java
    poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java

Modified: poi/trunk/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java?rev=1514812&r1=1514811&r2=1514812&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java (original)
+++ poi/trunk/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java Fri Aug 16
17:35:16 2013
@@ -37,6 +37,7 @@ import org.apache.poi.ss.util.CellRefere
  * For POI internal use only
  *
  * @author Josh Micich
+ * @author Cédric Walter
  */
 public final class OperationEvaluationContext {
 	public static final FreeRefFunction UDF = UserDefinedFunction.instance;
@@ -83,13 +84,13 @@ public final class OperationEvaluationCo
 		} else {
 			// look up sheet by name from external workbook
 			String workbookName = externalSheet.getWorkbookName();
-			try {
-				targetEvaluator = _bookEvaluator.getOtherWorkbookEvaluator(workbookName);
-			} catch (WorkbookNotFoundException e) {
-				throw new RuntimeException(e.getMessage(), e);
-			}
-			otherSheetIndex = targetEvaluator.getSheetIndex(externalSheet.getSheetName());
-			if (otherSheetIndex < 0) {
+			try {
+				targetEvaluator = _bookEvaluator.getOtherWorkbookEvaluator(workbookName);
+			} catch (WorkbookNotFoundException e) {
+				throw new RuntimeException(e.getMessage(), e);
+			}
+			otherSheetIndex = targetEvaluator.getSheetIndex(externalSheet.getSheetName());
+			if (otherSheetIndex < 0) {
 				throw new RuntimeException("Invalid sheet name '" + externalSheet.getSheetName()
 						+ "' in bool '" + workbookName + "'.");
 			}
@@ -195,16 +196,32 @@ public final class OperationEvaluationCo
 		int firstRow, firstCol, lastRow, lastCol;
 		switch (part1refType) {
 			case COLUMN:
-				firstRow =0;
-				lastRow = ssVersion.getLastRowIndex();
-				firstCol = parseColRef(refStrPart1);
-				lastCol = parseColRef(refStrPart2);
-				break;
+                firstRow =0;
+                if (part2refType.equals(NameType.COLUMN))
+                {
+                    lastRow = ssVersion.getLastRowIndex();
+                    firstCol = parseRowRef(refStrPart1);
+                    lastCol = parseRowRef(refStrPart2);
+                }
+                else {
+                    lastRow = ssVersion.getLastRowIndex();
+                    firstCol = parseColRef(refStrPart1);
+                    lastCol = parseColRef(refStrPart2);
+                }
+                break;
 			case ROW:
-				firstCol = 0;
-				lastCol = ssVersion.getLastColumnIndex();
-				firstRow = parseRowRef(refStrPart1);
-				lastRow = parseRowRef(refStrPart2);
+                // support of cell range in the form of integer:integer
+                firstCol = 0;
+                if (part2refType.equals(NameType.ROW))
+                {
+                    firstRow = parseColRef(refStrPart1);
+                    lastRow = parseColRef(refStrPart2);
+                    lastCol = ssVersion.getLastColumnIndex();
+                } else {
+                    lastCol = ssVersion.getLastColumnIndex();
+                    firstRow = parseRowRef(refStrPart1);
+                    lastRow = parseRowRef(refStrPart2);
+                }
 				break;
 			case CELL:
 				CellReference cr;

Added: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java?rev=1514812&view=auto
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java
(added)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java
Fri Aug 16 17:35:16 2013
@@ -0,0 +1,35 @@
+/* ====================================================================
+   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 org.apache.poi.ss.formula.functions;
+
+/**
+ * Tests INDIRECT() as loaded from a test data spreadsheet.<p/>
+ *
+ * Tests for bug fixes and specific/tricky behaviour can be found in the corresponding test
class
+ * (<tt>TestXxxx</tt>) of the target (<tt>Xxxx</tt>) implementor,
where execution can be observed
+ *  more easily.
+ *
+ * @author Cédric Walter
+ */
+public final class TestIndirectFunctionFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet
{
+
+    @Override
+    protected String getFilename() {
+        return "IndirectFunctionTestCaseData.xls";
+    }
+}

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java?rev=1514812&r1=1514811&r2=1514812&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java
(original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java
Fri Aug 16 17:35:16 2013
@@ -20,16 +20,13 @@ package org.apache.poi.ss.formula.functi
 
 
 /**
- * Tests lookup functions (VLOOKUP, HLOOKUP, LOOKUP, MATCH) as loaded from a test data spreadsheet.<p/>
- * These tests have been separated from the common function and operator tests because the
lookup
- * functions have more complex test cases and test data setup.
+ * Tests Match functions as loaded from a test data spreadsheet.<p/>
  *
  * Tests for bug fixes and specific/tricky behaviour can be found in the corresponding test
class
  * (<tt>TestXxxx</tt>) of the target (<tt>Xxxx</tt>) implementor,
where execution can be observed
  *  more easily.
  *
- * @author Josh Micich
- * @author Cedric Walter at innoveo.com
+ * @author Cédric Walter
  */
 public final class TestMatchFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet
{
 

Added: poi/trunk/test-data/spreadsheet/IndirectFunctionTestCaseData.xls
URL: http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/IndirectFunctionTestCaseData.xls?rev=1514812&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/test-data/spreadsheet/IndirectFunctionTestCaseData.xls
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org


Mime
View raw message