unary plus: patch by Amol Deshmukh, test added

git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353685 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Avik Sengupta 2005-05-18 18:58:57 +00:00
parent b5f199991c
commit 4290d1b472
2 changed files with 18 additions and 2 deletions

View File

@ -115,7 +115,7 @@ public class FormulaParser {
private void Abort(String s) { private void Abort(String s) {
Error(s); Error(s);
//System.exit(1); //throw exception?? //System.exit(1); //throw exception??
throw new RuntimeException("Cannot Parse, sorry : "+s); throw new RuntimeException("Cannot Parse, sorry : "+s + " [Formula String was: '"+formulaString+"']");
} }
@ -466,6 +466,11 @@ public class FormulaParser {
Factor(); Factor();
tokens.add(new UnaryMinusPtg()); tokens.add(new UnaryMinusPtg());
} }
else if (look == '+') {
Match('+');
Factor();
tokens.add(new UnaryPlusPtg());
}
else if (look == '(' ) { else if (look == '(' ) {
Match('('); Match('(');
Expression(); Expression();

View File

@ -36,6 +36,7 @@ import org.apache.poi.hssf.record.formula.Ptg;
import org.apache.poi.hssf.record.formula.ReferencePtg; import org.apache.poi.hssf.record.formula.ReferencePtg;
import org.apache.poi.hssf.record.formula.StringPtg; import org.apache.poi.hssf.record.formula.StringPtg;
import org.apache.poi.hssf.record.formula.UnaryMinusPtg; 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.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFSheet;
@ -323,7 +324,17 @@ public class TestFormulaParser extends TestCase {
Ptg[] ptg = fp.getRPNPtg(); Ptg[] ptg = fp.getRPNPtg();
assertTrue("got 2 ptgs", ptg.length == 2); assertTrue("got 2 ptgs", ptg.length == 2);
assertTrue("first ptg is reference",ptg[0] instanceof ReferencePtg); assertTrue("first ptg is reference",ptg[0] instanceof ReferencePtg);
assertTrue("second ptg is string",ptg[1] instanceof UnaryMinusPtg); assertTrue("second ptg is Minus",ptg[1] instanceof UnaryMinusPtg);
}
public void testUnaryPlus()
{
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 Plus",ptg[1] instanceof UnaryPlusPtg);
} }
public void testLeadingSpaceInString() public void testLeadingSpaceInString()