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