| 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); |
| } |
| } |
| } |