You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by av...@apache.org on 2004/01/01 19:50:41 UTC

cvs commit: jakarta-poi/src/testcases/org/apache/poi/hssf/model TestFormulaParser.java

avik        2004/01/01 10:50:41

  Modified:    src/testcases/org/apache/poi/hssf/model Tag: REL_2_BRANCH
                        TestFormulaParser.java
  Log:
  testcases for formula parser changes, missed in prev commit
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.7.2.4   +76 -1     jakarta-poi/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java
  
  Index: TestFormulaParser.java
  ===================================================================
  RCS file: /home/cvs/jakarta-poi/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java,v
  retrieving revision 1.7.2.3
  retrieving revision 1.7.2.4
  diff -u -r1.7.2.3 -r1.7.2.4
  --- TestFormulaParser.java	13 Oct 2003 16:42:17 -0000	1.7.2.3
  +++ TestFormulaParser.java	1 Jan 2004 18:50:41 -0000	1.7.2.4
  @@ -55,7 +55,25 @@
   
   import junit.framework.TestCase;
   
  -import org.apache.poi.hssf.record.formula.*;
  +import org.apache.poi.hssf.record.formula.AbstractFunctionPtg;
  +import org.apache.poi.hssf.record.formula.AddPtg;
  +import org.apache.poi.hssf.record.formula.AttrPtg;
  +import org.apache.poi.hssf.record.formula.BoolPtg;
  +import org.apache.poi.hssf.record.formula.EqualPtg;
  +import org.apache.poi.hssf.record.formula.FuncVarPtg;
  +import org.apache.poi.hssf.record.formula.IntPtg;
  +import org.apache.poi.hssf.record.formula.LessEqualPtg;
  +import org.apache.poi.hssf.record.formula.LessThanPtg;
  +import org.apache.poi.hssf.record.formula.NamePtg;
  +import org.apache.poi.hssf.record.formula.NotEqualPtg;
  +import org.apache.poi.hssf.record.formula.Ptg;
  +import org.apache.poi.hssf.record.formula.ReferencePtg;
  +import org.apache.poi.hssf.record.formula.StringPtg;
  +import org.apache.poi.hssf.record.formula.UnaryMinusPtg;
  +import org.apache.poi.hssf.usermodel.HSSFCell;
  +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 
  @@ -314,6 +332,63 @@
           assertTrue("second ptg is string",ptg[1] instanceof StringPtg);
       }
       
  +    public void testWorksheetReferences()
  +    {
  +    	HSSFWorkbook wb = new HSSFWorkbook();
  +    	
  +    	wb.createSheet("NoQuotesNeeded");
  +    	wb.createSheet("Quotes Needed Here &#$@");
  +    	
  +    	HSSFSheet sheet = wb.createSheet("Test");
  +    	HSSFRow row = sheet.createRow(0);
  +    	HSSFCell cell;
  +    	
  +    	cell = row.createCell((short)0);
  +    	cell.setCellFormula("NoQuotesNeeded!A1");
  +    	
  +    	cell = row.createCell((short)1);
  +    	cell.setCellFormula("'Quotes Needed Here &#$@'!A1");
  +    }
  +    
  +    public void testUnaryMinus()
  +    {
  +		FormulaParser fp = new FormulaParser("-A1", null);
  +		fp.parse();
  +		Ptg[] ptg = fp.getRPNPtg();
  +		assertTrue("got 2 ptgs", ptg.length == 2);
  +		assertTrue("first ptg is reference",ptg[0] instanceof ReferencePtg);
  +		assertTrue("second ptg is string",ptg[1] instanceof UnaryMinusPtg);
  +     }
  +    
  +	public void testLeadingSpaceInString()
  +	{
  +		String value = "  hi  ";
  +		FormulaParser fp = new FormulaParser("\"" + value + "\"", null);
  +		fp.parse();
  +		Ptg[] ptg = fp.getRPNPtg();
  +    
  +		assertTrue("got 1 ptg", ptg.length == 1);
  +		assertTrue("ptg0 is a StringPtg", ptg[0] instanceof StringPtg);
  +		assertTrue("ptg0 contains exact value", ((StringPtg)ptg[0]).getValue().equals(value));
  +	}
  +
  +	public void testLookupAndMatchFunctionArgs()
  +	{
  +		FormulaParser fp = new FormulaParser("lookup(A1, A3:A52, B3:B52)", null);
  +		fp.parse();
  +		Ptg[] ptg = fp.getRPNPtg();
  +    
  +		assertTrue("got 4 ptg", ptg.length == 4);
  +		assertTrue("ptg0 has Value class", ptg[0].getPtgClass() == Ptg.CLASS_VALUE);
  +		
  +		fp = new FormulaParser("match(A1, A3:A52)", null);
  +		fp.parse();
  +		ptg = fp.getRPNPtg();
  +    
  +		assertTrue("got 3 ptg", ptg.length == 3);
  +		assertTrue("ptg0 has Value class", ptg[0].getPtgClass() == Ptg.CLASS_VALUE);
  +	}
  +
        public static void main(String [] args) {
           System.out.println("Testing org.apache.poi.hssf.record.formula.FormulaParser");
           junit.textui.TestRunner.run(TestFormulaParser.class);
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: poi-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: poi-dev-help@jakarta.apache.org