From 4290d1b4726294a72e45b983e63cd4e95463f8c9 Mon Sep 17 00:00:00 2001 From: Avik Sengupta Date: Wed, 18 May 2005 18:58:57 +0000 Subject: [PATCH] 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 --- .../org/apache/poi/hssf/model/FormulaParser.java | 7 ++++++- .../apache/poi/hssf/model/TestFormulaParser.java | 13 ++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/java/org/apache/poi/hssf/model/FormulaParser.java b/src/java/org/apache/poi/hssf/model/FormulaParser.java index 78a94bff4..2141b53ed 100644 --- a/src/java/org/apache/poi/hssf/model/FormulaParser.java +++ b/src/java/org/apache/poi/hssf/model/FormulaParser.java @@ -115,7 +115,7 @@ public class FormulaParser { private void Abort(String s) { Error(s); //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(); tokens.add(new UnaryMinusPtg()); } + else if (look == '+') { + Match('+'); + Factor(); + tokens.add(new UnaryPlusPtg()); + } else if (look == '(' ) { Match('('); Expression(); diff --git a/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java b/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java index ec840ba3b..1e69ce0ed 100644 --- a/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java +++ b/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java @@ -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.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.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; @@ -323,7 +324,17 @@ public class TestFormulaParser extends TestCase { 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); + 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()