Author: fanningpj
Date: Mon Feb  7 20:55:26 2022
New Revision: 1897827

URL: http://svn.apache.org/viewvc?rev=1897827&view=rev
Log:
add negative tets

Modified:
    
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/OperationEvaluationContext.java
    
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Indirect.java
    poi/trunk/poi/src/main/java/org/apache/poi/ss/util/CellReference.java
    
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestIndirect.java

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/OperationEvaluationContext.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/OperationEvaluationContext.java?rev=1897827&r1=1897826&r2=1897827&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/OperationEvaluationContext.java
 (original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/OperationEvaluationContext.java
 Mon Feb  7 20:55:26 2022
@@ -207,6 +207,8 @@ public final class OperationEvaluationCo
      * @param isA1Style    specifies the format for {@code refStrPart1} and 
{@code refStrPart2}.
      *                     Pass {@code true} for 'A1' style and {@code false} 
for 'R1C1' style.
      * @return a {@link RefEval} or {@link AreaEval}
+     * @throws IllegalArgumentException
+     * @throws IllegalStateException
      */
     public ValueEval getDynamicReference(String workbookName, String 
sheetName, String refStrPart1,
                                          String refStrPart2, boolean 
isA1Style) {

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Indirect.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Indirect.java?rev=1897827&r1=1897826&r2=1897827&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Indirect.java 
(original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/Indirect.java 
Mon Feb  7 20:55:26 2022
@@ -17,6 +17,8 @@
 
 package org.apache.poi.ss.formula.functions;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.poi.ss.formula.FormulaParseException;
 import org.apache.poi.ss.formula.FormulaParser;
 import org.apache.poi.ss.formula.FormulaParsingWorkbook;
@@ -45,6 +47,7 @@ import org.apache.poi.ss.usermodel.Table
  */
 public final class Indirect implements FreeRefFunction {
 
+    private static final Logger LOGGER = LogManager.getLogger(Indirect.class);
     public static final FreeRefFunction instance = new Indirect();
 
     private Indirect() {
@@ -136,7 +139,12 @@ public final class Indirect implements F
                 refStrPart1 = refText.substring(0, colonPos).trim();
                 refStrPart2 = refText.substring(colonPos + 1).trim();
             }
-            return ec.getDynamicReference(workbookName, sheetName, 
refStrPart1, refStrPart2, isA1style);
+            try {
+                return ec.getDynamicReference(workbookName, sheetName, 
refStrPart1, refStrPart2, isA1style);
+            } catch (Exception e) {
+                LOGGER.atWarn().log("Indirect function: failed to parse 
reference {}", text, e);
+                return ErrorEval.REF_INVALID;
+            }
         }
     }
 

Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/util/CellReference.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/util/CellReference.java?rev=1897827&r1=1897826&r2=1897827&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/util/CellReference.java 
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/util/CellReference.java Mon 
Feb  7 20:55:26 2022
@@ -109,6 +109,7 @@ public class CellReference implements Ge
     /**
      * Create an cell ref from a string representation.  Sheet names 
containing special characters should be
      * delimited and escaped as per normal syntax rules for formulas.
+     * @throws IllegalArgumentException if cellRef is not valid
      */
     public CellReference(String cellRef) {
         if(endsWithIgnoreCase(cellRef, "#REF!")) {

Modified: 
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestIndirect.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestIndirect.java?rev=1897827&r1=1897826&r2=1897827&view=diff
==============================================================================
--- 
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestIndirect.java
 (original)
+++ 
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestIndirect.java
 Mon Feb  7 20:55:26 2022
@@ -177,6 +177,7 @@ final class TestIndirect {
             // simple error propagation:
 
             confirm(feA, c, "INDIRECT(\"'Sheet1 '!R3C4\", FALSE)", 
ErrorEval.REF_INVALID);
+            confirm(feA, c, "INDIRECT(\"R2CX\", FALSE)", 
ErrorEval.REF_INVALID);
         }
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to