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/03/31 20:08:14 UTC
svn commit: r1899452 - /poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestRate.java
Author: fanningpj
Date: Thu Mar 31 20:08:14 2022
New Revision: 1899452
URL: http://svn.apache.org/viewvc?rev=1899452&view=rev
Log:
[bug-65988] add test case for rate function (failing)
Added:
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestRate.java
- copied, changed from r1899431, poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestRank.java
Copied: poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestRate.java (from r1899431, poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestRank.java)
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestRate.java?p2=poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestRate.java&p1=poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestRank.java&r1=1899431&r2=1899452&rev=1899452&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestRank.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestRate.java Thu Mar 31 20:08:14 2022
@@ -19,53 +19,47 @@
package org.apache.poi.ss.formula.functions;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator;
+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.util.CellReference;
+import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
+import static org.apache.poi.ss.util.Utils.addRow;
+import static org.apache.poi.ss.util.Utils.assertDouble;
+
/**
- * Test cases for RANK()
+ * Test cases for RATE()
*/
-final class TestRank {
+final class TestRate {
@Test
- void testFromFile() {
-
- HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("rank.xls");
- HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
-
- HSSFSheet example1 = wb.getSheet("Example 1");
- HSSFCell ex1cell1 = example1.getRow(7).getCell(0);
- assertEquals(3.0, fe.evaluate(ex1cell1).getNumberValue(), 0);
- HSSFCell ex1cell2 = example1.getRow(8).getCell(0);
- assertEquals(5.0, fe.evaluate(ex1cell2).getNumberValue(), 0);
-
- HSSFSheet example2 = wb.getSheet("Example 2");
- for(int rownum = 1; rownum<= 10; rownum ++){
- HSSFCell cell = example2.getRow(rownum).getCell(2);
- double cachedResult = cell.getNumericCellValue(); //cached formula result
- assertEquals(cachedResult, fe.evaluate(cell).getNumberValue(), 0);
+ void testMicrosoftExample1() throws Exception {
+ //https://support.microsoft.com/en-us/office/rate-function-9f665657-4a7e-4bb7-a030-83fc59e748ce
+ try (HSSFWorkbook wb = new HSSFWorkbook()) {
+ HSSFSheet sheet = wb.createSheet();
+ addRow(sheet, 0, "Data", "Description");
+ addRow(sheet, 1, 4, "Years of loan");
+ addRow(sheet, 2, -200, "Monthly payment");
+ addRow(sheet, 3, 8000, "Amount of the loan");
+ HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
+ HSSFCell cell = sheet.getRow(0).createCell(100);
+ assertDouble(fe, cell, "RATE(A2*12, A3, A4)", 0.007701472, 0.000001);
+ assertDouble(fe, cell, "RATE(A2*12, A3, A4)*12", 0.09241767, 0.000001);
}
+ }
- HSSFSheet example3 = wb.getSheet("Example 3");
- for(int rownum = 1; rownum<= 10; rownum ++){
- HSSFCell cellD = example3.getRow(rownum).getCell(3);
- double cachedResultD = cellD.getNumericCellValue(); //cached formula result
- assertEquals(cachedResultD, fe.evaluate(cellD).getNumberValue(), 0, new CellReference(cellD).formatAsString());
-
- HSSFCell cellE = example3.getRow(rownum).getCell(4);
- double cachedResultE = cellE.getNumericCellValue(); //cached formula result
- assertEquals(cachedResultE, fe.evaluate(cellE).getNumberValue(), 0, new CellReference(cellE).formatAsString());
-
- HSSFCell cellF = example3.getRow(rownum).getCell(5);
- double cachedResultF = cellF.getNumericCellValue(); //cached formula result
- assertEquals(cachedResultF, fe.evaluate(cellF).getNumberValue(), 0, new CellReference(cellF).formatAsString());
+ @Disabled("test fails - see related issue")
+ @Test
+ void testBug65988() throws Exception {
+ try (HSSFWorkbook wb = new HSSFWorkbook()) {
+ HSSFSheet sheet = wb.createSheet();
+ HSSFRow row = sheet.createRow(0);
+ HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
+ HSSFCell cell = row.createCell(0);
+ assertDouble(fe, cell, "RATE(360.0,6.56,-2000.0)", 0.0009480170844060, 0.000001);
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org