| using System; | 
 | using System.Text; | 
 | using System.Collections.Generic; | 
 | using System.Linq; | 
 | using Microsoft.VisualStudio.TestTools.UnitTesting; | 
 | using OfficeOpenXml.FormulaParsing; | 
 | using Rhino.Mocks; | 
 |  | 
 | namespace EPPlusTest.FormulaParsing.IntegrationTests.BuiltInFunctions | 
 | { | 
 |     [TestClass] | 
 |     public class StringFunctionsTests : FormulaParserTestBase | 
 |     { | 
 |         private ExcelDataProvider _provider; | 
 |         [TestInitialize] | 
 |         public void Setup() | 
 |         { | 
 |             _provider = MockRepository.GenerateStub<ExcelDataProvider>(); | 
 |             _parser = new FormulaParser(_provider); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void TextShouldConcatenateWithNextExpression() | 
 |         { | 
 |             _provider.Stub(x => x.GetFormat(23.5, "$0.00")).Return("$23.50"); | 
 |             var result = _parser.Parse("TEXT(23.5,\"$0.00\") & \" per hour\""); | 
 |             Assert.AreEqual("$23.50 per hour", result); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void LenShouldAddLengthUsingSuppliedOperator() | 
 |         { | 
 |             var result = _parser.Parse("Len(\"abc\") + 2"); | 
 |             Assert.AreEqual(5d, result); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void LowerShouldReturnALowerCaseString() | 
 |         { | 
 |             var result = _parser.Parse("Lower(\"ABC\")"); | 
 |             Assert.AreEqual("abc", result); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void UpperShouldReturnAnUpperCaseString() | 
 |         { | 
 |             var result = _parser.Parse("Upper(\"abc\")"); | 
 |             Assert.AreEqual("ABC", result); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void LeftShouldReturnSubstringFromLeft() | 
 |         { | 
 |             var result = _parser.Parse("Left(\"abacd\", 2)"); | 
 |             Assert.AreEqual("ab", result); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void RightShouldReturnSubstringFromRight() | 
 |         { | 
 |             var result = _parser.Parse("RIGHT(\"abacd\", 2)"); | 
 |             Assert.AreEqual("cd", result); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void MidShouldReturnSubstringAccordingToParams() | 
 |         { | 
 |             var result = _parser.Parse("Mid(\"abacd\", 2, 2)"); | 
 |             Assert.AreEqual("ba", result); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void ReplaceShouldReturnSubstringAccordingToParams() | 
 |         { | 
 |             var result = _parser.Parse("Replace(\"testar\", 3, 3, \"hej\")"); | 
 |             Assert.AreEqual("tehejr", result); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void SubstituteShouldReturnSubstringAccordingToParams() | 
 |         { | 
 |             var result = _parser.Parse("Substitute(\"testar testar\", \"es\", \"xx\")"); | 
 |             Assert.AreEqual("txxtar txxtar", result); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void ConcatenateShouldReturnAccordingToParams() | 
 |         { | 
 |             var result = _parser.Parse("CONCATENATE(\"One\", \"Two\", \"Three\")"); | 
 |             Assert.AreEqual("OneTwoThree", result); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void TShouldReturnText() | 
 |         { | 
 |             var result = _parser.Parse("T(\"One\")"); | 
 |             Assert.AreEqual("One", result); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void ReptShouldConcatenate() | 
 |         { | 
 |             var result = _parser.Parse("REPT(\"*\",3)"); | 
 |             Assert.AreEqual("***", result); | 
 |         } | 
 |     } | 
 | } |