|  | using System; | 
|  | using System.Text; | 
|  | using System.Collections.Generic; | 
|  | using System.Linq; | 
|  | using Microsoft.VisualStudio.TestTools.UnitTesting; | 
|  | using OfficeOpenXml.FormulaParsing.ExpressionGraph; | 
|  | using OfficeOpenXml.FormulaParsing.Excel.Operators; | 
|  |  | 
|  | namespace EPPlusTest.FormulaParsing.ExpressionGraph | 
|  | { | 
|  | [TestClass] | 
|  | public class ExpressionConverterTests | 
|  | { | 
|  | private IExpressionConverter _converter; | 
|  |  | 
|  | [TestInitialize] | 
|  | public void Setup() | 
|  | { | 
|  | _converter = new ExpressionConverter(); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void ToStringExpressionShouldConvertIntegerExpressionToStringExpression() | 
|  | { | 
|  | var integerExpression = new IntegerExpression("2"); | 
|  | var result = _converter.ToStringExpression(integerExpression); | 
|  | Assert.IsInstanceOfType(result, typeof(StringExpression)); | 
|  | Assert.AreEqual("2", result.Compile().Result); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void ToStringExpressionShouldCopyOperatorToStringExpression() | 
|  | { | 
|  | var integerExpression = new IntegerExpression("2"); | 
|  | integerExpression.Operator = Operator.Plus; | 
|  | var result = _converter.ToStringExpression(integerExpression); | 
|  | Assert.AreEqual(integerExpression.Operator, result.Operator); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void ToStringExpressionShouldConvertDecimalExpressionToStringExpression() | 
|  | { | 
|  | var decimalExpression = new DecimalExpression("2.5"); | 
|  | var result = _converter.ToStringExpression(decimalExpression); | 
|  | Assert.IsInstanceOfType(result, typeof(StringExpression)); | 
|  | Assert.AreEqual("2,5", result.Compile().Result); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void FromCompileResultShouldCreateIntegerExpressionIfCompileResultIsInteger() | 
|  | { | 
|  | var compileResult = new CompileResult(1, DataType.Integer); | 
|  | var result = _converter.FromCompileResult(compileResult); | 
|  | Assert.IsInstanceOfType(result, typeof(IntegerExpression)); | 
|  | Assert.AreEqual(1d, result.Compile().Result); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void FromCompileResultShouldCreateStringExpressionIfCompileResultIsString() | 
|  | { | 
|  | var compileResult = new CompileResult("abc", DataType.String); | 
|  | var result = _converter.FromCompileResult(compileResult); | 
|  | Assert.IsInstanceOfType(result, typeof(StringExpression)); | 
|  | Assert.AreEqual("abc", result.Compile().Result); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void FromCompileResultShouldCreateDecimalExpressionIfCompileResultIsDecimal() | 
|  | { | 
|  | var compileResult = new CompileResult(2.5d, DataType.Decimal); | 
|  | var result = _converter.FromCompileResult(compileResult); | 
|  | Assert.IsInstanceOfType(result, typeof(DecimalExpression)); | 
|  | Assert.AreEqual(2.5d, result.Compile().Result); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void FromCompileResultShouldCreateBooleanExpressionIfCompileResultIsBoolean() | 
|  | { | 
|  | var compileResult = new CompileResult("true", DataType.Boolean); | 
|  | var result = _converter.FromCompileResult(compileResult); | 
|  | Assert.IsInstanceOfType(result, typeof(BooleanExpression)); | 
|  | Assert.IsTrue((bool)result.Compile().Result); | 
|  | } | 
|  | } | 
|  | } |