From: Nick Burch Date: Wed, 9 Jan 2008 09:22:20 +0000 (+0000) Subject: Shuffle some bits of TestFormulaParser into scratchpad, so it can find HSSFFormulaEva... X-Git-Tag: REL_3_0_3_BETA1~207 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=45618f3754999537eaaa0685889fbbb19d4fc7eb;p=poi.git Shuffle some bits of TestFormulaParser into scratchpad, so it can find HSSFFormulaEvaluator git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@610313 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/scratchpad/testcases/org/apache/poi/hssf/model/TestFormulaParserSP.java b/src/scratchpad/testcases/org/apache/poi/hssf/model/TestFormulaParserSP.java new file mode 100644 index 0000000000..aa73714a0f --- /dev/null +++ b/src/scratchpad/testcases/org/apache/poi/hssf/model/TestFormulaParserSP.java @@ -0,0 +1,83 @@ + +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.hssf.model; + +import junit.framework.TestCase; + +import org.apache.poi.hssf.record.formula.FuncVarPtg; +import org.apache.poi.hssf.record.formula.NamePtg; +import org.apache.poi.hssf.record.formula.Ptg; +import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator; +import org.apache.poi.hssf.usermodel.HSSFName; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; + +/** + * Test the low level formula parser functionality, + * but using parts which need to use the + * HSSFFormulaEvaluator, which is in scratchpad + */ +public class TestFormulaParserSP extends TestCase { + + public TestFormulaParserSP(String name) { + super(name); + } + + public void testWithNamedRange() throws Exception { + HSSFWorkbook workbook = new HSSFWorkbook(); + FormulaParser fp; + Ptg[] ptgs; + + HSSFSheet s = workbook.createSheet("Foo"); + s.createRow(0).createCell((short)0).setCellValue(1.1); + s.createRow(1).createCell((short)0).setCellValue(2.3); + s.createRow(2).createCell((short)2).setCellValue(3.1); + + HSSFName name = workbook.createName(); + name.setNameName("testName"); + name.setReference("A1:A2"); + + fp = HSSFFormulaEvaluator.getUnderlyingParser(workbook, "SUM(testName)"); + fp.parse(); + ptgs = fp.getRPNPtg(); + assertTrue("two tokens expected, got "+ptgs.length,ptgs.length == 2); + assertEquals(NamePtg.class, ptgs[0].getClass()); + assertEquals(FuncVarPtg.class, ptgs[1].getClass()); + + // Now make it a single cell + name.setReference("C3"); + + fp = HSSFFormulaEvaluator.getUnderlyingParser(workbook, "SUM(testName)"); + fp.parse(); + ptgs = fp.getRPNPtg(); + assertTrue("two tokens expected, got "+ptgs.length,ptgs.length == 2); + assertEquals(NamePtg.class, ptgs[0].getClass()); + assertEquals(FuncVarPtg.class, ptgs[1].getClass()); + + // And make it non-contiguous + name.setReference("A1:A2,C3"); + fp = HSSFFormulaEvaluator.getUnderlyingParser(workbook, "SUM(testName)"); + fp.parse(); + ptgs = fp.getRPNPtg(); + assertTrue("two tokens expected, got "+ptgs.length,ptgs.length == 2); + assertEquals(NamePtg.class, ptgs[0].getClass()); + assertEquals(FuncVarPtg.class, ptgs[1].getClass()); + } + +} diff --git a/src/testcases/org/apache/poi/hssf/HSSFTests.java b/src/testcases/org/apache/poi/hssf/HSSFTests.java index c26ba9beb3..1bc9df1798 100644 --- a/src/testcases/org/apache/poi/hssf/HSSFTests.java +++ b/src/testcases/org/apache/poi/hssf/HSSFTests.java @@ -23,8 +23,8 @@ import junit.framework.TestSuite; import org.apache.poi.hssf.eventmodel.TestEventRecordFactory; import org.apache.poi.hssf.eventmodel.TestModelFactory; -import org.apache.poi.hssf.model.TestFormulaParser; import org.apache.poi.hssf.model.TestDrawingManager; +import org.apache.poi.hssf.model.TestFormulaParser; import org.apache.poi.hssf.model.TestSheet; import org.apache.poi.hssf.record.TestAreaFormatRecord; import org.apache.poi.hssf.record.TestAreaRecord; @@ -91,6 +91,7 @@ import org.apache.poi.hssf.usermodel.TestFontDetails; import org.apache.poi.hssf.usermodel.TestFormulas; import org.apache.poi.hssf.usermodel.TestHSSFCell; import org.apache.poi.hssf.usermodel.TestHSSFClientAnchor; +import org.apache.poi.hssf.usermodel.TestHSSFComment; import org.apache.poi.hssf.usermodel.TestHSSFDateUtil; import org.apache.poi.hssf.usermodel.TestHSSFHeaderFooter; import org.apache.poi.hssf.usermodel.TestHSSFPalette; @@ -110,7 +111,6 @@ import org.apache.poi.hssf.util.TestCellReference; import org.apache.poi.hssf.util.TestRKUtil; import org.apache.poi.hssf.util.TestRangeAddress; import org.apache.poi.hssf.util.TestSheetReferences; -import org.apache.poi.hssf.usermodel.TestHSSFComment; /** * Test Suite for running just HSSF tests. Mostly diff --git a/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java b/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java index 4a84209fb5..9e6b53e9af 100644 --- a/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java +++ b/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java @@ -39,15 +39,15 @@ import org.apache.poi.hssf.record.formula.StringPtg; import org.apache.poi.hssf.record.formula.UnaryMinusPtg; import org.apache.poi.hssf.record.formula.UnaryPlusPtg; import org.apache.poi.hssf.usermodel.HSSFCell; -import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator; -import org.apache.poi.hssf.usermodel.HSSFName; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; /** * Test the low level formula parser functionality. High level tests are to - * be done via usermodel/HSSFCell.setFormulaValue() . + * be done via usermodel/HSSFCell.setFormulaValue() . + * Some tests are also done in scratchpad, if they need + * HSSFFormulaEvaluator, which is there */ public class TestFormulaParser extends TestCase { @@ -352,47 +352,6 @@ public class TestFormulaParser extends TestCase { assertTrue("ptg0 contains exact value", ((StringPtg)ptg[0]).getValue().equals(value)); } - public void testWithNamedRange() throws Exception { - HSSFWorkbook workbook = new HSSFWorkbook(); - FormulaParser fp; - Ptg[] ptgs; - - HSSFSheet s = workbook.createSheet("Foo"); - s.createRow(0).createCell((short)0).setCellValue(1.1); - s.createRow(1).createCell((short)0).setCellValue(2.3); - s.createRow(2).createCell((short)2).setCellValue(3.1); - - HSSFName name = workbook.createName(); - name.setNameName("testName"); - name.setReference("A1:A2"); - - fp = HSSFFormulaEvaluator.getUnderlyingParser(workbook, "SUM(testName)"); - fp.parse(); - ptgs = fp.getRPNPtg(); - assertTrue("two tokens expected, got "+ptgs.length,ptgs.length == 2); - assertEquals(NamePtg.class, ptgs[0].getClass()); - assertEquals(FuncVarPtg.class, ptgs[1].getClass()); - - // Now make it a single cell - name.setReference("C3"); - - fp = HSSFFormulaEvaluator.getUnderlyingParser(workbook, "SUM(testName)"); - fp.parse(); - ptgs = fp.getRPNPtg(); - assertTrue("two tokens expected, got "+ptgs.length,ptgs.length == 2); - assertEquals(NamePtg.class, ptgs[0].getClass()); - assertEquals(FuncVarPtg.class, ptgs[1].getClass()); - - // And make it non-contiguous - name.setReference("A1:A2,C3"); - fp = HSSFFormulaEvaluator.getUnderlyingParser(workbook, "SUM(testName)"); - fp.parse(); - ptgs = fp.getRPNPtg(); - assertTrue("two tokens expected, got "+ptgs.length,ptgs.length == 2); - assertEquals(NamePtg.class, ptgs[0].getClass()); - assertEquals(FuncVarPtg.class, ptgs[1].getClass()); - } - public void testLookupAndMatchFunctionArgs() { FormulaParser fp = new FormulaParser("lookup(A1, A3:A52, B3:B52)", null);