|  | using System; | 
|  | using System.Text; | 
|  | using System.Collections.Generic; | 
|  | using System.Linq; | 
|  | using Microsoft.VisualStudio.TestTools.UnitTesting; | 
|  | using OfficeOpenXml.FormulaParsing; | 
|  | using Rhino.Mocks; | 
|  |  | 
|  | namespace EPPlusTest.FormulaParsing.IntegrationTests | 
|  | { | 
|  | [TestClass] | 
|  | public class PrecedenceTests : FormulaParserTestBase | 
|  | { | 
|  |  | 
|  | [TestInitialize] | 
|  | public void Setup() | 
|  | { | 
|  | var excelDataProvider = MockRepository.GenerateStub<ExcelDataProvider>(); | 
|  | _parser = new FormulaParser(excelDataProvider); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void ShouldCaluclateUsingPrecedenceMultiplyBeforeAdd() | 
|  | { | 
|  | var result = _parser.Parse("4 + 6 * 2"); | 
|  | Assert.AreEqual(16d, result); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void ShouldCaluclateUsingPrecedenceDivideBeforeAdd() | 
|  | { | 
|  | var result = _parser.Parse("4 + 6 / 2"); | 
|  | Assert.AreEqual(7d, result); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void ShouldCalculateTwoGroupsUsingDivideAndMultiplyBeforeSubtract() | 
|  | { | 
|  | var result = _parser.Parse("4/2 + 3 * 3"); | 
|  | Assert.AreEqual(11d, result); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void ShouldCalculateExpressionWithinParenthesisBeforeMultiply() | 
|  | { | 
|  | var result = _parser.Parse("(2+4) * 2"); | 
|  | Assert.AreEqual(12d, result); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void ShouldConcatAfterAdd() | 
|  | { | 
|  | var result = _parser.Parse("2 + 4 & \"abc\""); | 
|  | Assert.AreEqual("6abc", result); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void Bugfixtest() | 
|  | { | 
|  | var result = _parser.Parse("(1+2)+3^2"); | 
|  | } | 
|  | } | 
|  | } |