blob: c10fc17f7f68c430a2cef4543bc46275ca645351 [file] [log] [blame]
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");
}
}
}