| using System; |
| using System.Text; |
| using System.Collections.Generic; |
| using System.Linq; |
| using Microsoft.VisualStudio.TestTools.UnitTesting; |
| using OfficeOpenXml.FormulaParsing.LexicalAnalysis; |
| using OfficeOpenXml.FormulaParsing.Exceptions; |
| |
| namespace EPPlusTest.FormulaParsing.LexicalAnalysis |
| { |
| [TestClass] |
| public class SyntacticAnalyzerTests |
| { |
| private ISyntacticAnalyzer _analyser; |
| |
| [TestInitialize] |
| public void Setup() |
| { |
| _analyser = new SyntacticAnalyzer(); |
| } |
| |
| [TestMethod] |
| public void ShouldPassIfParenthesisAreWellformed() |
| { |
| var input = new List<Token> |
| { |
| new Token("(", TokenType.OpeningParenthesis), |
| new Token("1", TokenType.Integer), |
| new Token("+", TokenType.Operator), |
| new Token("2", TokenType.Integer), |
| new Token(")", TokenType.ClosingParenthesis) |
| }; |
| _analyser.Analyze(input); |
| } |
| |
| [TestMethod, ExpectedException(typeof(FormatException))] |
| public void ShouldThrowExceptionIfParenthesesAreNotWellformed() |
| { |
| var input = new List<Token> |
| { |
| new Token("(", TokenType.OpeningParenthesis), |
| new Token("1", TokenType.Integer), |
| new Token("+", TokenType.Operator), |
| new Token("2", TokenType.Integer) |
| }; |
| _analyser.Analyze(input); |
| } |
| |
| [TestMethod] |
| public void ShouldPassIfStringIsWellformed() |
| { |
| var input = new List<Token> |
| { |
| new Token("'", TokenType.String), |
| new Token("abc123", TokenType.StringContent), |
| new Token("'", TokenType.String) |
| }; |
| _analyser.Analyze(input); |
| } |
| |
| [TestMethod, ExpectedException(typeof(FormatException))] |
| public void ShouldThrowExceptionIfStringHasNotClosing() |
| { |
| var input = new List<Token> |
| { |
| new Token("'", TokenType.String), |
| new Token("abc123", TokenType.StringContent) |
| }; |
| _analyser.Analyze(input); |
| } |
| |
| |
| [TestMethod, ExpectedException(typeof(UnrecognizedTokenException))] |
| public void ShouldThrowExceptionIfThereIsAnUnrecognizedToken() |
| { |
| var input = new List<Token> |
| { |
| new Token("abc123", TokenType.Unrecognized) |
| }; |
| _analyser.Analyze(input); |
| } |
| } |
| } |