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