예제 #1
0
        public void TestBug55843b()
        {
            XSSFWorkbook wb = new XSSFWorkbook();

            try
            {
                XSSFSheet sheet  = wb.CreateSheet("test") as XSSFSheet;
                XSSFRow   row    = sheet.CreateRow(0) as XSSFRow;
                XSSFRow   row2   = sheet.CreateRow(1) as XSSFRow;
                XSSFCell  cellA2 = row2.CreateCell(0, CellType.Formula) as XSSFCell;
                XSSFCell  cellB1 = row.CreateCell(1, CellType.Numeric) as XSSFCell;
                cellB1.SetCellValue(10);
                XSSFFormulaEvaluator formulaEvaluator = wb.GetCreationHelper().CreateFormulaEvaluator() as XSSFFormulaEvaluator;

                cellA2.SetCellFormula("IF(B1=0,\"\",((ROW())))");
                CellValue Evaluate = formulaEvaluator.Evaluate(cellA2);
                System.Console.WriteLine(Evaluate);
                Assert.AreEqual("2", Evaluate.FormatAsString());

                cellA2.CellFormula = (/*setter*/ "IF(NOT(B1=0),((ROW())),\"\")");
                CellValue EvaluateN = formulaEvaluator.Evaluate(cellA2);
                System.Console.WriteLine(EvaluateN);

                Assert.AreEqual(Evaluate.ToString(), EvaluateN.ToString());
                Assert.AreEqual("2", EvaluateN.FormatAsString());
            }
            finally
            {
                wb.Close();
            }
        }
예제 #2
0
 private static AssertionException wrongTypeError(String msgPrefix, ICell expectedCell, CellValue actualValue)
 {
     return(new AssertionException(msgPrefix + " Result type mismatch. Evaluated result was "
                                   + actualValue.FormatAsString()
                                   + " but the expected result was "
                                   + formatValue(expectedCell)
                                   ));
 }
예제 #3
0
        private static void Confirm(IFormulaEvaluator fe, ICell cell, String formula,
                                    ErrorEval expectedResult)
        {
            fe.ClearAllCachedResultValues();
            cell.CellFormula = (formula);
            CellValue cv = fe.Evaluate(cell);

            if (cv.CellType != CellType.Error)
            {
                throw new AssertionException("expected error cell type but got " + cv.FormatAsString());
            }
            int expCode = expectedResult.ErrorCode;

            if (cv.ErrorValue != expCode)
            {
                throw new AssertionException("Expected error '" + ErrorEval.GetText(expCode)
                                             + "' but got '" + cv.FormatAsString() + "'.");
            }
        }
예제 #4
0
        private static void ConfirmExpectedResult(IFormulaEvaluator Evaluator, String msg, ICell cell, double expected)
        {
            CellValue value = Evaluator.Evaluate(cell);

            if (value.ErrorValue != 0)
            {
                throw new Exception(msg + ": " + value.FormatAsString());
            }
            Assert.AreEqual(expected, value.NumberValue, msg);
        }
예제 #5
0
        private static void ConfirmError(IFormulaEvaluator fe, ICell cell, String formulaText, ErrorEval expectedError)
        {
            fe.DebugEvaluationOutputForNextEval = true;
            cell.SetCellFormula(formulaText);
            fe.NotifyUpdateCell(cell);
            CellValue result = fe.Evaluate(cell);

            Assert.AreEqual(CellType.Error, result.CellType, "Testing result type for: " + formulaText);
            Assert.AreEqual(expectedError.ErrorString, result.FormatAsString(), "Testing error type for: " + formulaText);
        }
예제 #6
0
        private void Confirm(string formulaText, String expectedResult)
        {
            cell11.CellFormula = (/*setter*/ formulaText);
            Evaluator.ClearAllCachedResultValues();
            CellValue cv = Evaluator.Evaluate(cell11);

            Assert.AreEqual(CellType.String, cv.CellType, "Wrong result type: " + cv.FormatAsString());
            String actualValue = cv.StringValue;

            Assert.AreEqual(expectedResult, actualValue);
        }
예제 #7
0
        private static void Confirm(IFormulaEvaluator fe, ICell cell, String expectedResult)
        {
            fe.ClearAllCachedResultValues();
            CellValue cv = fe.Evaluate(cell);

            if (cv.CellType != CellType.String)
            {
                Assert.Fail("expected String cell type but got " + cv.FormatAsString());
            }
            Assert.AreEqual(expectedResult, cv.StringValue);
        }
예제 #8
0
        private static void Confirm(IFormulaEvaluator fe, ICell cell, double expectedResult)
        {
            fe.ClearAllCachedResultValues();
            CellValue cv = fe.Evaluate(cell);

            if (cv.CellType != CellType.Numeric)
            {
                Assert.Fail("expected numeric cell type but got " + cv.FormatAsString());
            }
            Assert.AreEqual(expectedResult, cv.NumberValue, 0.0);
        }
예제 #9
0
        private static void Confirm(IFormulaEvaluator fe, ICell cell, String formula,
                                    double expectedResult)
        {
            fe.ClearAllCachedResultValues();
            cell.CellFormula = (formula);
            CellValue cv = fe.Evaluate(cell);

            if (cv.CellType != CellType.NUMERIC)
            {
                throw new AssertionException("expected numeric cell type but got " + cv.FormatAsString());
            }
            Assert.AreEqual(expectedResult, cv.NumberValue, 0.0);
        }
예제 #10
0
        private void Confirm(string formulaText, double expectedResult)
        {
            cell11.CellFormula = (formulaText);
            Evaluator.ClearAllCachedResultValues();
            CellValue cv = Evaluator.Evaluate(cell11);

            if (cv.CellType != CellType.Numeric)
            {
                throw new AssertionException("Wrong result type: " + cv.FormatAsString());
            }
            double actualValue = cv.NumberValue;

            Assert.AreEqual(expectedResult, actualValue, 0);
        }
예제 #11
0
 private static void ConfirmErrorResult(String msgPrefix, int expectedErrorCode, CellValue actual)
 {
     if (actual.CellType != CellType.Error)
     {
         throw new AssertionException(msgPrefix + " Expected cell error ("
                                      + ErrorEval.GetText(expectedErrorCode) + ") but actual value was "
                                      + actual.FormatAsString());
     }
     if (expectedErrorCode != actual.ErrorValue)
     {
         throw new AssertionException(msgPrefix + " Expected cell error code ("
                                      + ErrorEval.GetText(expectedErrorCode)
                                      + ") but actual error code was ("
                                      + ErrorEval.GetText(actual.ErrorValue)
                                      + ")");
     }
 }
예제 #12
0
        public void TestCountifBug51498()
        {
            int REF_COL  = 4;
            int EVAL_COL = 3;

            HSSFWorkbook      workbook  = HSSFTestDataSamples.OpenSampleWorkbook("51498.xls");
            IFormulaEvaluator evaluator = workbook.GetCreationHelper().CreateFormulaEvaluator();
            ISheet            sheet     = workbook.GetSheetAt(0);

            // numeric criteria
            for (int i = 0; i < 8; i++)
            {
                CellValue expected = evaluator.Evaluate(sheet.GetRow(i).GetCell(REF_COL));
                CellValue actual   = evaluator.Evaluate(sheet.GetRow(i).GetCell(EVAL_COL));
                Assert.AreEqual(expected.FormatAsString(), actual.FormatAsString());
            }

            // boolean criteria
            for (int i = 0; i < 8; i++)
            {
                HSSFCell cellFmla = (HSSFCell)sheet.GetRow(i).GetCell(8);
                HSSFCell cellRef  = (HSSFCell)sheet.GetRow(i).GetCell(9);

                double expectedValue = cellRef.NumericCellValue;
                double actualValue   = evaluator.Evaluate(cellFmla).NumberValue;

                Assert.AreEqual(expectedValue, actualValue, 0.0001,
                                "Problem with a formula at " +
                                new CellReference(cellFmla).FormatAsString() + "[" + cellFmla.CellFormula + "] ");
            }

            // string criteria
            for (int i = 1; i < 9; i++)
            {
                ICell cellFmla = sheet.GetRow(i).GetCell(13);
                ICell cellRef  = sheet.GetRow(i).GetCell(14);

                double expectedValue = cellRef.NumericCellValue;
                double actualValue   = evaluator.Evaluate(cellFmla).NumberValue;

                Assert.AreEqual(expectedValue, actualValue, 0.0001,
                                "Problem with a formula at " +
                                new CellReference(cellFmla).FormatAsString() + "[" + cellFmla.CellFormula + "] ");
            }
        }
예제 #13
0
        private void ConfirmValueError(string formulaText)
        {
            cell11.CellFormula = (/*setter*/ formulaText);
            Evaluator.ClearAllCachedResultValues();
            CellValue cv = Evaluator.Evaluate(cell11);

            Assert.IsTrue(cv.CellType == CellType.Error &&
                          cv.ErrorValue == ErrorConstants.ERROR_VALUE, "Wrong result type: " + cv.FormatAsString());
        }