Author: fanningpj
Date: Fri Feb 25 12:17:51 2022
New Revision: 1898413

URL: http://svn.apache.org/viewvc?rev=1898413&view=rev
Log:
add tests for 'OR' function

Added:
    
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestOrFunction.java
      - copied, changed from r1898397, 
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestDollarFr.java
Modified:
    poi/trunk/poi/src/test/java/org/apache/poi/ss/util/Utils.java

Copied: 
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestOrFunction.java
 (from r1898397, 
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestDollarFr.java)
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestOrFunction.java?p2=poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestOrFunction.java&p1=poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestDollarFr.java&r1=1898397&r2=1898413&rev=1898413&view=diff
==============================================================================
--- 
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestDollarFr.java
 (original)
+++ 
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestOrFunction.java
 Fri Feb 25 12:17:51 2022
@@ -23,84 +23,83 @@ import org.apache.poi.hssf.usermodel.HSS
 import org.apache.poi.hssf.usermodel.HSSFSheet;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.formula.OperationEvaluationContext;
-import org.apache.poi.ss.formula.eval.ErrorEval;
-import org.apache.poi.ss.formula.eval.NumberEval;
-import org.apache.poi.ss.formula.eval.StringEval;
-import org.apache.poi.ss.formula.eval.ValueEval;
 import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 
+import static org.apache.poi.ss.util.Utils.addRow;
+import static org.apache.poi.ss.util.Utils.assertBoolean;
 import static org.apache.poi.ss.util.Utils.assertDouble;
-import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.apache.poi.ss.util.Utils.assertString;
 
 /**
- * Tests for {@link DollarFr}
+ * Tests for {@link BooleanFunction#OR}
  */
-final class TestDollarFr {
+final class TestOrFunction {
 
     private static final OperationEvaluationContext ec = new 
OperationEvaluationContext(null, null, 0, 0, 0, null);
 
     @Test
-    void testInvalid() {
-        confirmInvalidError("A1","B2");
-    }
-
-    @Test
-    void testNumError() {
-        confirmNumError("22.5","-40");
-    }
-
-    @Test
-    void testDiv0() {
-        confirmDiv0("22.5","0");
-        confirmDiv0("22.5","0.9");
-        confirmDiv0("22.5","-0.9");
-    }
-
-    
//https://support.microsoft.com/en-us/office/dollarfr-function-0835d163-3023-4a33-9824-3042c5d4f495
-    @Test
-    void testMicrosoftExample1() throws IOException {
+    void testMicrosoftExample0() throws IOException {
+        
//https://support.microsoft.com/en-us/office/or-function-7d17ad14-8700-4281-b308-00b131e22af0
         try (HSSFWorkbook wb = new HSSFWorkbook()) {
+            HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
             HSSFSheet sheet = wb.createSheet();
             HSSFRow row = sheet.createRow(0);
-            HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
             HSSFCell cell = row.createCell(0);
-            double tolerance = 0.000000000000001;
-            assertDouble(fe, cell, "DOLLARFR(1.125,16)", 1.02, tolerance);
-            assertDouble(fe, cell, "DOLLARFR(-1.125,16)", -1.02, tolerance);
-            assertDouble(fe, cell, "DOLLARFR(1.000125,16)", 1.00002, 
tolerance);
-            assertDouble(fe, cell, "DOLLARFR(1.125,32)", 1.04, tolerance);
+            assertBoolean(fe, cell, "OR(TRUE,TRUE)", true);
+            assertBoolean(fe, cell, "OR(TRUE,FALSE)", true);
+            assertBoolean(fe, cell, "OR(1=1,2=2,3=3)", true);
+            assertBoolean(fe, cell, "OR(1=2,2=3,3=4)", false);
         }
     }
 
-    private static ValueEval invokeValue(String number1, String number2) {
-        ValueEval[] args = new ValueEval[] { new StringEval(number1), new 
StringEval(number2) };
-        return DollarDe.instance.evaluate(args, ec);
-    }
-
-    private static void confirmValue(String number1, String number2, double 
expected) {
-        ValueEval result = invokeValue(number1, number2);
-        assertEquals(NumberEval.class, result.getClass());
-        assertEquals(expected, ((NumberEval) result).getNumberValue(), 
0.00000000000001);
-    }
-
-    private static void confirmInvalidError(String number1, String number2) {
-        ValueEval result = invokeValue(number1, number2);
-        assertEquals(ErrorEval.class, result.getClass());
-        assertEquals(ErrorEval.VALUE_INVALID, result);
+    @Test
+    void testMicrosoftExample1() throws IOException {
+        
//https://support.microsoft.com/en-us/office/or-function-7d17ad14-8700-4281-b308-00b131e22af0
+        try (HSSFWorkbook wb = initWorkbook1()) {
+            HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
+            HSSFCell cell = wb.getSheetAt(0).getRow(0).createCell(100);
+            assertBoolean(fe, cell, "OR(A2>1,A2<100)", true);
+            assertDouble(fe, cell, "IF(OR(A2>1,A2<100),A3,\"The value is out 
of range\")", 100);
+            assertString(fe, cell, "IF(OR(A2<0,A2>50),A2,\"The value is out of 
range\")", "The value is out of range");
+        }
     }
 
-    private static void confirmNumError(String number1, String number2) {
-        ValueEval result = invokeValue(number1, number2);
-        assertEquals(ErrorEval.class, result.getClass());
-        assertEquals(ErrorEval.NUM_ERROR, result);
+    @Test
+    void testMicrosoftExample2() throws IOException {
+        
//https://support.microsoft.com/en-us/office/or-function-7d17ad14-8700-4281-b308-00b131e22af0
+        try (HSSFWorkbook wb = initWorkbook2()) {
+            HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
+            HSSFCell cell = wb.getSheetAt(0).getRow(13).createCell(3);
+            assertDouble(fe, cell, "IF(OR(B14>=$B$4,C14>=$B$5),B14*$B$6,0)", 
314);
+        }
     }
 
-    private static void confirmDiv0(String number1, String number2) {
-        ValueEval result = invokeValue(number1, number2);
-        assertEquals(ErrorEval.class, result.getClass());
-        assertEquals(ErrorEval.DIV_ZERO, result);
+    private HSSFWorkbook initWorkbook1() {
+        HSSFWorkbook wb = new HSSFWorkbook();
+        HSSFSheet sheet = wb.createSheet();
+        addRow(sheet, 0, "Values");
+        addRow(sheet, 1, 50);
+        addRow(sheet, 2, 100);
+        return wb;
+    }
+
+    private HSSFWorkbook initWorkbook2() {
+        HSSFWorkbook wb = new HSSFWorkbook();
+        HSSFSheet sheet = wb.createSheet();
+        addRow(sheet, 0, "Goals");
+        addRow(sheet, 2, "Criteria", "Amount");
+        addRow(sheet, 3, "Sales Goal", 8500);
+        addRow(sheet, 4, "Account Goal", 5);
+        addRow(sheet, 5, "Commission Rate", 0.02);
+        addRow(sheet, 6, "Bonus Goal", 12500);
+        addRow(sheet, 7, "Bonus %", 0.015);
+        addRow(sheet, 9, "Commission Calculations");
+        addRow(sheet, 11, "Salesperson", "Total Sales", "Accounts", 
"Commission", "Bonus");
+        addRow(sheet, 12, "Millicent Shelton", 10260, 9);
+        addRow(sheet, 13, "Miguel Ferrari", 15700, 7);
+        return wb;
     }
 
 }

Modified: poi/trunk/poi/src/test/java/org/apache/poi/ss/util/Utils.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/util/Utils.java?rev=1898413&r1=1898412&r2=1898413&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/ss/util/Utils.java (original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/ss/util/Utils.java Fri Feb 25 
12:17:51 2022
@@ -80,6 +80,14 @@ public class Utils {
         assertEquals(expectedResult, result.getNumberValue(), tolerance);
     }
 
+    public static void assertBoolean(FormulaEvaluator fe, Cell cell, String 
formulaText, boolean expectedResult) {
+        cell.setCellFormula(formulaText);
+        fe.notifyUpdateCell(cell);
+        CellValue result = fe.evaluate(cell);
+        assertEquals(CellType.BOOLEAN, result.getCellType());
+        assertEquals(expectedResult, result.getBooleanValue());
+    }
+
     public static void assertError(FormulaEvaluator fe, Cell cell, String 
formulaText, FormulaError expectedError) {
         cell.setCellFormula(formulaText);
         fe.notifyUpdateCell(cell);



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

Reply via email to