blob: 3eb547d04a5be8b41e8ce52df02f814fac993cea [file] [log] [blame]
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);
}
}
}