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