| using System; |
| using System.Text; |
| using System.Collections.Generic; |
| using System.Linq; |
| using Microsoft.VisualStudio.TestTools.UnitTesting; |
| using OfficeOpenXml.FormulaParsing; |
| using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; |
| using EPPlusTest.FormulaParsing.TestHelpers; |
| using OfficeOpenXml.FormulaParsing.ExpressionGraph; |
| |
| namespace EPPlusTest.Excel.Functions.Text |
| { |
| [TestClass] |
| public class TextFunctionsTests |
| { |
| private ParsingContext _parsingContext = ParsingContext.Create(); |
| |
| [TestMethod] |
| public void CStrShouldConvertNumberToString() |
| { |
| var func = new CStr(); |
| var result = func.Execute(FunctionsHelper.CreateArgs(1), _parsingContext); |
| Assert.AreEqual(DataType.String, result.DataType); |
| Assert.AreEqual("1", result.Result); |
| } |
| |
| [TestMethod] |
| public void LenShouldReturnStringsLength() |
| { |
| var func = new Len(); |
| var result = func.Execute(FunctionsHelper.CreateArgs("abc"), _parsingContext); |
| Assert.AreEqual(3d, result.Result); |
| } |
| |
| [TestMethod] |
| public void LowerShouldReturnLowerCaseString() |
| { |
| var func = new Lower(); |
| var result = func.Execute(FunctionsHelper.CreateArgs("ABC"), _parsingContext); |
| Assert.AreEqual("abc", result.Result); |
| } |
| |
| [TestMethod] |
| public void UpperShouldReturnUpperCaseString() |
| { |
| var func = new Upper(); |
| var result = func.Execute(FunctionsHelper.CreateArgs("abc"), _parsingContext); |
| Assert.AreEqual("ABC", result.Result); |
| } |
| |
| [TestMethod] |
| public void LeftShouldReturnSubstringFromLeft() |
| { |
| var func = new Left(); |
| var result = func.Execute(FunctionsHelper.CreateArgs("abcd", 2), _parsingContext); |
| Assert.AreEqual("ab", result.Result); |
| } |
| |
| [TestMethod] |
| public void RightShouldReturnSubstringFromRight() |
| { |
| var func = new Right(); |
| var result = func.Execute(FunctionsHelper.CreateArgs("abcd", 2), _parsingContext); |
| Assert.AreEqual("cd", result.Result); |
| } |
| |
| [TestMethod] |
| public void MidShouldReturnSubstringAccordingToParams() |
| { |
| var func = new Mid(); |
| var result = func.Execute(FunctionsHelper.CreateArgs("abcd", 1, 2), _parsingContext); |
| Assert.AreEqual("ab", result.Result); |
| } |
| |
| [TestMethod] |
| public void ReplaceShouldReturnAReplacedStringAccordingToParamsWhenStartIxIs1() |
| { |
| var func = new Replace(); |
| var result = func.Execute(FunctionsHelper.CreateArgs("testar", 1, 2, "hej"), _parsingContext); |
| Assert.AreEqual("hejstar", result.Result); |
| } |
| |
| [TestMethod] |
| public void ReplaceShouldReturnAReplacedStringAccordingToParamsWhenStartIxIs3() |
| { |
| var func = new Replace(); |
| var result = func.Execute(FunctionsHelper.CreateArgs("testar", 3, 3, "hej"), _parsingContext); |
| Assert.AreEqual("tehejr", result.Result); |
| } |
| |
| [TestMethod] |
| public void SubstituteShouldReturnAReplacedStringAccordingToParamsWhen() |
| { |
| var func = new Substitute(); |
| var result = func.Execute(FunctionsHelper.CreateArgs("testar testar", "es", "xx"), _parsingContext); |
| Assert.AreEqual("txxtar txxtar", result.Result); |
| } |
| |
| [TestMethod] |
| public void ConcatenateShouldConcatenateThreeStrings() |
| { |
| var func = new Concatenate(); |
| var result = func.Execute(FunctionsHelper.CreateArgs("One", "Two", "Three"), _parsingContext); |
| Assert.AreEqual("OneTwoThree", result.Result); |
| } |
| |
| [TestMethod] |
| public void ConcatenateShouldConcatenateStringWithInt() |
| { |
| var func = new Concatenate(); |
| var result = func.Execute(FunctionsHelper.CreateArgs(1, "Two"), _parsingContext); |
| Assert.AreEqual("1Two", result.Result); |
| } |
| |
| [TestMethod] |
| public void ExactShouldReturnTrueWhenTwoEqualStrings() |
| { |
| var func = new Exact(); |
| var result = func.Execute(FunctionsHelper.CreateArgs("abc", "abc"), _parsingContext); |
| Assert.IsTrue((bool)result.Result); |
| } |
| |
| [TestMethod] |
| public void ExactShouldReturnTrueWhenEqualStringAndDouble() |
| { |
| var func = new Exact(); |
| var result = func.Execute(FunctionsHelper.CreateArgs("1", 1d), _parsingContext); |
| Assert.IsTrue((bool)result.Result); |
| } |
| |
| [TestMethod] |
| public void ExactShouldReturnFalseWhenStringAndNull() |
| { |
| var func = new Exact(); |
| var result = func.Execute(FunctionsHelper.CreateArgs("1", null), _parsingContext); |
| Assert.IsFalse((bool)result.Result); |
| } |
| |
| [TestMethod] |
| public void ExactShouldReturnFalseWhenTwoEqualStringsWithDifferentCase() |
| { |
| var func = new Exact(); |
| var result = func.Execute(FunctionsHelper.CreateArgs("abc", "Abc"), _parsingContext); |
| Assert.IsFalse((bool)result.Result); |
| } |
| |
| [TestMethod] |
| public void FindShouldReturnIndexOfFoundPhrase() |
| { |
| var func = new Find(); |
| var result = func.Execute(FunctionsHelper.CreateArgs("hopp", "hej hopp"), _parsingContext); |
| Assert.AreEqual(5, result.Result); |
| } |
| |
| [TestMethod] |
| public void FindShouldReturnIndexOfFoundPhraseBasedOnStartIndex() |
| { |
| var func = new Find(); |
| var result = func.Execute(FunctionsHelper.CreateArgs("hopp", "hopp hopp", 2), _parsingContext); |
| Assert.AreEqual(6, result.Result); |
| } |
| |
| [TestMethod] |
| public void ProperShouldSetFirstLetterToUpperCase() |
| { |
| var func = new Proper(); |
| var result = func.Execute(FunctionsHelper.CreateArgs("this IS A tEst.wi3th SOME w0rds östEr"), _parsingContext); |
| Assert.AreEqual("This Is A Test.Wi3Th Some W0Rds Öster", result.Result); |
| } |
| |
| [TestMethod] |
| public void HyperLinkShouldReturnArgIfOneArgIsSupplied() |
| { |
| var func = new Hyperlink(); |
| var result = func.Execute(FunctionsHelper.CreateArgs("http://epplus.codeplex.com"), _parsingContext); |
| Assert.AreEqual("http://epplus.codeplex.com", result.Result); |
| } |
| |
| [TestMethod] |
| public void HyperLinkShouldReturnLastArgIfTwoArgsAreSupplied() |
| { |
| var func = new Hyperlink(); |
| var result = func.Execute(FunctionsHelper.CreateArgs("http://epplus.codeplex.com", "EPPlus"), _parsingContext); |
| Assert.AreEqual("EPPlus", result.Result); |
| } |
| } |
| } |