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