|  | using System; | 
|  | using System.Text; | 
|  | using System.Collections.Generic; | 
|  | using System.Linq; | 
|  | using Microsoft.VisualStudio.TestTools.UnitTesting; | 
|  | using Rhino.Mocks; | 
|  | using OfficeOpenXml.FormulaParsing; | 
|  | using OfficeOpenXml.FormulaParsing.LexicalAnalysis; | 
|  | namespace EPPlusTest.FormulaParsing.LexicalAnalysis | 
|  | { | 
|  | [TestClass] | 
|  | public class TokenFactoryTests | 
|  | { | 
|  | private ITokenFactory _tokenFactory; | 
|  | private INameValueProvider _nameValueProvider; | 
|  |  | 
|  |  | 
|  | [TestInitialize] | 
|  | public void Setup() | 
|  | { | 
|  | var context = ParsingContext.Create(); | 
|  | var excelDataProvider = MockRepository.GenerateStub<ExcelDataProvider>(); | 
|  | _nameValueProvider = MockRepository.GenerateStub<INameValueProvider>(); | 
|  | _tokenFactory = new TokenFactory(context.Configuration.FunctionRepository, _nameValueProvider); | 
|  | } | 
|  |  | 
|  | [TestCleanup] | 
|  | public void Cleanup() | 
|  | { | 
|  |  | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void ShouldCreateAStringToken() | 
|  | { | 
|  | var input = "\""; | 
|  | var token = _tokenFactory.Create(Enumerable.Empty<Token>(), input); | 
|  |  | 
|  | Assert.AreEqual("\"", token.Value); | 
|  | Assert.AreEqual(TokenType.String, token.TokenType); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void ShouldCreatePlusAsOperatorToken() | 
|  | { | 
|  | var input = "+"; | 
|  | var token = _tokenFactory.Create(Enumerable.Empty<Token>(), input); | 
|  |  | 
|  | Assert.AreEqual("+", token.Value); | 
|  | Assert.AreEqual(TokenType.Operator, token.TokenType); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void ShouldCreateMinusAsOperatorToken() | 
|  | { | 
|  | var input = "-"; | 
|  | var token = _tokenFactory.Create(Enumerable.Empty<Token>(), input); | 
|  |  | 
|  | Assert.AreEqual("-", token.Value); | 
|  | Assert.AreEqual(TokenType.Operator, token.TokenType); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void ShouldCreateMultiplyAsOperatorToken() | 
|  | { | 
|  | var input = "*"; | 
|  | var token = _tokenFactory.Create(Enumerable.Empty<Token>(), input); | 
|  |  | 
|  | Assert.AreEqual("*", token.Value); | 
|  | Assert.AreEqual(TokenType.Operator, token.TokenType); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void ShouldCreateDivideAsOperatorToken() | 
|  | { | 
|  | var input = "/"; | 
|  | var token = _tokenFactory.Create(Enumerable.Empty<Token>(), input); | 
|  |  | 
|  | Assert.AreEqual("/", token.Value); | 
|  | Assert.AreEqual(TokenType.Operator, token.TokenType); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void ShouldCreateEqualsAsOperatorToken() | 
|  | { | 
|  | var input = "="; | 
|  | var token = _tokenFactory.Create(Enumerable.Empty<Token>(), input); | 
|  |  | 
|  | Assert.AreEqual("=", token.Value); | 
|  | Assert.AreEqual(TokenType.Operator, token.TokenType); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void ShouldCreateIntegerAsIntegerToken() | 
|  | { | 
|  | var input = "23"; | 
|  | var token = _tokenFactory.Create(Enumerable.Empty<Token>(), input); | 
|  |  | 
|  | Assert.AreEqual("23", token.Value); | 
|  | Assert.AreEqual(TokenType.Integer, token.TokenType); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void ShouldCreateBooleanAsBooleanToken() | 
|  | { | 
|  | var input = "true"; | 
|  | var token = _tokenFactory.Create(Enumerable.Empty<Token>(), input); | 
|  |  | 
|  | Assert.AreEqual("true", token.Value); | 
|  | Assert.AreEqual(TokenType.Boolean, token.TokenType); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void ShouldCreateDecimalAsDecimalToken() | 
|  | { | 
|  | var input = "23.3"; | 
|  | var token = _tokenFactory.Create(Enumerable.Empty<Token>(), input); | 
|  |  | 
|  | Assert.AreEqual("23.3", token.Value); | 
|  | Assert.AreEqual(TokenType.Decimal, token.TokenType); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void CreateShouldReadFunctionsFromFuncRepository() | 
|  | { | 
|  | var input = "Text"; | 
|  | var token = _tokenFactory.Create(Enumerable.Empty<Token>(), input); | 
|  | Assert.AreEqual(TokenType.Function, token.TokenType); | 
|  | Assert.AreEqual("Text", token.Value); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void CreateShouldCreateExcelAddressAsExcelAddressToken() | 
|  | { | 
|  | var input = "A1"; | 
|  | var token = _tokenFactory.Create(Enumerable.Empty<Token>(), input); | 
|  | Assert.AreEqual(TokenType.ExcelAddress, token.TokenType); | 
|  | Assert.AreEqual("A1", token.Value); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void CreateShouldCreateExcelRangeAsExcelAddressToken() | 
|  | { | 
|  | var input = "A1:B15"; | 
|  | var token = _tokenFactory.Create(Enumerable.Empty<Token>(), input); | 
|  | Assert.AreEqual(TokenType.ExcelAddress, token.TokenType); | 
|  | Assert.AreEqual("A1:B15", token.Value); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void CreateShouldCreateExcelRangeOnOtherSheetAsExcelAddressToken() | 
|  | { | 
|  | var input = "ws!A1:B15"; | 
|  | var token = _tokenFactory.Create(Enumerable.Empty<Token>(), input); | 
|  | Assert.AreEqual(TokenType.ExcelAddress, token.TokenType); | 
|  | Assert.AreEqual("WS!A1:B15", token.Value); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void CreateShouldCreateNamedValueAsExcelAddressToken() | 
|  | { | 
|  | var input = "NamedValue"; | 
|  | _nameValueProvider.Stub(x => x.IsNamedValue("NamedValue","")).Return(true); | 
|  | _nameValueProvider.Stub(x => x.IsNamedValue("NamedValue", null)).Return(true); | 
|  | var token = _tokenFactory.Create(Enumerable.Empty<Token>(), input); | 
|  | Assert.AreEqual(TokenType.NameValue, token.TokenType); | 
|  | Assert.AreEqual("NamedValue", token.Value); | 
|  | } | 
|  | } | 
|  | } |