You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by fa...@apache.org on 2022/05/23 14:42:50 UTC

svn commit: r1901177 - in /poi/trunk/poi/src: main/java/org/apache/poi/ss/formula/functions/ test/java/org/apache/poi/ss/formula/functions/

Author: fanningpj
Date: Mon May 23 14:42:50 2022
New Revision: 1901177

URL: http://svn.apache.org/viewvc?rev=1901177&view=rev
Log:
add floor tests

Added:
    poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestFloor.java
      - copied, changed from r1901175, poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestFloorMath.java
Modified:
    poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/CeilingMath.java
    poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/FloorMath.java
    poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/MathX.java
    poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestCeilingMath.java
    poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestFloorMath.java

Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/CeilingMath.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/CeilingMath.java?rev=1901177&r1=1901176&r2=1901177&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/CeilingMath.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/CeilingMath.java Mon May 23 14:42:50 2022
@@ -48,7 +48,7 @@ public final class CeilingMath implement
         try {
             Double xval = evaluateValue(args[0], ec.getRowIndex(), ec.getColumnIndex());
             if (xval == null) {
-                return ErrorEval.NUM_ERROR;
+                return ErrorEval.VALUE_INVALID;
             }
             double multiplier = 1.0;
             if (args.length > 1) {

Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/FloorMath.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/FloorMath.java?rev=1901177&r1=1901176&r2=1901177&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/FloorMath.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/FloorMath.java Mon May 23 14:42:50 2022
@@ -48,7 +48,7 @@ public final class FloorMath implements
         try {
             Double xval = evaluateValue(args[0], ec.getRowIndex(), ec.getColumnIndex());
             if (xval == null) {
-                return ErrorEval.NUM_ERROR;
+                return ErrorEval.VALUE_INVALID;
             }
             double multiplier = 1.0;
             if (args.length > 1) {

Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/MathX.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/MathX.java?rev=1901177&r1=1901176&r2=1901177&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/MathX.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/functions/MathX.java Mon May 23 14:42:50 2022
@@ -240,6 +240,8 @@ final class MathX {
                 return 0.0;
             } else if (s == 1.0) {
                 return Math.floor(n);
+            } else if (s < 0.0 && n >= 0.0) {
+                return Double.NaN;
             } else {
                 return scaledRoundUsingBigDecimal(n, s, RoundingMode.FLOOR);
             }

Modified: poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestCeilingMath.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestCeilingMath.java?rev=1901177&r1=1901176&r2=1901177&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestCeilingMath.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestCeilingMath.java Mon May 23 14:42:50 2022
@@ -73,7 +73,7 @@ final class TestCeilingMath {
             HSSFRow row = sheet.createRow(0);
             HSSFCell cell = row.createCell(0);
             HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
-            assertError(fe, cell, "CEILING.MATH(\"abc\")", FormulaError.NUM);
+            assertError(fe, cell, "CEILING.MATH(\"abc\")", FormulaError.VALUE);
         }
     }
 }

Copied: poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestFloor.java (from r1901175, poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestFloorMath.java)
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestFloor.java?p2=poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestFloor.java&p1=poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestFloorMath.java&r1=1901175&r2=1901177&rev=1901177&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestFloorMath.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestFloor.java Mon May 23 14:42:50 2022
@@ -22,6 +22,7 @@ import org.apache.poi.hssf.usermodel.HSS
 import org.apache.poi.hssf.usermodel.HSSFRow;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.formula.FormulaParseException;
 import org.apache.poi.ss.usermodel.FormulaError;
 import org.junit.jupiter.api.Test;
 
@@ -29,13 +30,14 @@ import java.io.IOException;
 
 import static org.apache.poi.ss.util.Utils.assertDouble;
 import static org.apache.poi.ss.util.Utils.assertError;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 /**
- * Tests for {@link FloorMath}
+ * Tests for Floor function
  */
-final class TestFloorMath {
+final class TestFloor {
 
-    //https://support.microsoft.com/en-us/office/floor-math-function-c302b599-fbdb-4177-ba19-2c2b1249a2f5
+    //https://support.microsoft.com/en-us/office/floor-function-14bb497c-24f2-4e04-b327-b0b4de5a8886
     @Test
     void testMicrosoftExamples() throws IOException {
         try (HSSFWorkbook wb = new HSSFWorkbook()) {
@@ -43,15 +45,11 @@ final class TestFloorMath {
             HSSFRow row = sheet.createRow(0);
             HSSFCell cell = row.createCell(0);
             HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
-            assertDouble(fe, cell, "FLOOR.MATH(24.3,5)", 20.0, 0.00000000000001);
-            assertDouble(fe, cell, "FLOOR.MATH(6.7)", 6.0, 0.00000000000001);
-            assertDouble(fe, cell, "FLOOR.MATH(-8.1,2)", -10.0, 0.00000000000001);
-            assertDouble(fe, cell, "FLOOR.MATH(-5.5,2,-1)", -4.0, 0.00000000000001);
-
-            assertDouble(fe, cell, "FLOOR.MATH(-2.5,-2)", -4.0, 0.00000000000001);
-            assertDouble(fe, cell, "FLOOR.MATH(-2.5,-2,-1)", -2.0, 0.00000000000001);
-            assertDouble(fe, cell, "FLOOR.MATH(2.5,-2)", 2.0, 0.00000000000001);
-            assertDouble(fe, cell, "FLOOR.MATH(0.234,0.01)", 0.23, 0.00000000000001);
+            assertDouble(fe, cell, "FLOOR(3.7,2)", 2.0, 0.00000000000001);
+            assertDouble(fe, cell, "FLOOR(-2.5,-2)", -2.0, 0.00000000000001);
+            assertError(fe, cell, "FLOOR(2.5,-2)", FormulaError.NUM);
+            assertDouble(fe, cell, "FLOOR(1.58,0.1)", 1.5, 0.00000000000001);
+            assertDouble(fe, cell, "FLOOR(0.234,0.01)", 0.23, 0.00000000000001);
         }
     }
 
@@ -62,18 +60,19 @@ final class TestFloorMath {
             HSSFRow row = sheet.createRow(0);
             HSSFCell cell = row.createCell(0);
             HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
-            assertError(fe, cell, "FLOOR.MATH()", FormulaError.VALUE);
+            assertThrows(FormulaParseException.class, () ->
+                assertError(fe, cell, "FLOOR()", FormulaError.VALUE));
         }
     }
 
     @Test
-    void testNumError() throws IOException {
+    void testInvalidNum() throws IOException {
         try (HSSFWorkbook wb = new HSSFWorkbook()) {
             HSSFSheet sheet = wb.createSheet();
             HSSFRow row = sheet.createRow(0);
             HSSFCell cell = row.createCell(0);
             HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
-            assertError(fe, cell, "FLOOR.MATH(\"abc\")", FormulaError.NUM);
+            assertError(fe, cell, "FLOOR(\"abc\", \"def\")", FormulaError.VALUE);
         }
     }
 }

Modified: poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestFloorMath.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestFloorMath.java?rev=1901177&r1=1901176&r2=1901177&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestFloorMath.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestFloorMath.java Mon May 23 14:42:50 2022
@@ -73,7 +73,7 @@ final class TestFloorMath {
             HSSFRow row = sheet.createRow(0);
             HSSFCell cell = row.createCell(0);
             HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
-            assertError(fe, cell, "FLOOR.MATH(\"abc\")", FormulaError.NUM);
+            assertError(fe, cell, "FLOOR.MATH(\"abc\")", FormulaError.VALUE);
         }
     }
 }



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