| using System; | 
 | using System.Text; | 
 | using System.Collections.Generic; | 
 | using System.Linq; | 
 | using Microsoft.VisualStudio.TestTools.UnitTesting; | 
 | using OfficeOpenXml.FormulaParsing.LexicalAnalysis; | 
 | using OfficeOpenXml.FormulaParsing; | 
 |  | 
 |  | 
 | namespace EPPlusTest.FormulaParsing.LexicalAnalysis | 
 | { | 
 |     [TestClass] | 
 |     public class NegationTests | 
 |     { | 
 |         private SourceCodeTokenizer _tokenizer; | 
 |  | 
 |         [TestInitialize] | 
 |         public void Setup() | 
 |         { | 
 |             var context = ParsingContext.Create(); | 
 |             _tokenizer = new SourceCodeTokenizer(context.Configuration.FunctionRepository, null); | 
 |         } | 
 |  | 
 |         [TestCleanup] | 
 |         public void Cleanup() | 
 |         { | 
 |  | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void ShouldSetNegatorOnFirstTokenIfFirstCharIsMinus() | 
 |         { | 
 |             var input = "-1"; | 
 |             var tokens = _tokenizer.Tokenize(input); | 
 |  | 
 |             Assert.AreEqual(2, tokens.Count()); | 
 |             Assert.AreEqual(TokenType.Negator, tokens.First().TokenType); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void ShouldChangePlusToMinusIfNegatorIsPresent() | 
 |         { | 
 |             var input = "1 + -1"; | 
 |             var tokens = _tokenizer.Tokenize(input); | 
 |  | 
 |             Assert.AreEqual(3, tokens.Count()); | 
 |             Assert.AreEqual(TokenType.Operator, tokens.ElementAt(1).TokenType); | 
 |             Assert.AreEqual("-", tokens.ElementAt(1).Value); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void ShouldSetNegatorOnTokenInsideParenthethis() | 
 |         { | 
 |             var input = "1 + (-1 * 2)"; | 
 |             var tokens = _tokenizer.Tokenize(input); | 
 |  | 
 |             Assert.AreEqual(8, tokens.Count()); | 
 |             Assert.AreEqual(TokenType.Negator, tokens.ElementAt(3).TokenType); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void ShouldSetNegatorOnTokenInsideFunctionCall() | 
 |         { | 
 |             var input = "Ceiling(-1, -0.1)"; | 
 |             var tokens = _tokenizer.Tokenize(input); | 
 |  | 
 |             Assert.AreEqual(8, tokens.Count()); | 
 |             Assert.AreEqual(TokenType.Negator, tokens.ElementAt(2).TokenType); | 
 |             Assert.AreEqual(TokenType.Negator, tokens.ElementAt(5).TokenType, "Negator after comma was not identified"); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void ShouldSetNegatorOnTokenInEnumerable() | 
 |         { | 
 |             var input = "{-1}"; | 
 |             var tokens = _tokenizer.Tokenize(input); | 
 |             Assert.AreEqual(TokenType.Negator, tokens.ElementAt(1).TokenType); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void ShouldSetNegatorOnExcelAddress() | 
 |         { | 
 |             var input = "-A1"; | 
 |             var tokens = _tokenizer.Tokenize(input); | 
 |             Assert.AreEqual(TokenType.Negator, tokens.ElementAt(0).TokenType); | 
 |             Assert.AreEqual(TokenType.ExcelAddress, tokens.ElementAt(1).TokenType); | 
 |         } | 
 |     } | 
 | } |