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