blob: cb37df746b4afdec63ac75bea3c09b24af7cbf3f [file] [log] [blame]
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.Information;
using EPPlusTest.FormulaParsing.TestHelpers;
using OfficeOpenXml.FormulaParsing.Exceptions;
using OfficeOpenXml;
namespace EPPlusTest.Excel.Functions
{
[TestClass]
public class InformationFunctionsTests
{
private ParsingContext _context;
[TestInitialize]
public void Setup()
{
_context = ParsingContext.Create();
}
[TestMethod]
public void IsBlankShouldReturnTrueIfFirstArgIsNull()
{
var func = new IsBlank();
var args = FunctionsHelper.CreateArgs(new object[]{null});
var result = func.Execute(args, _context);
Assert.IsTrue((bool)result.Result);
}
[TestMethod]
public void IsBlankShouldReturnTrueIfFirstArgIsEmptyString()
{
var func = new IsBlank();
var args = FunctionsHelper.CreateArgs(string.Empty);
var result = func.Execute(args, _context);
Assert.IsTrue((bool)result.Result);
}
[TestMethod]
public void IsNumberShouldReturnTrueWhenArgIsNumeric()
{
var func = new IsNumber();
var args = FunctionsHelper.CreateArgs(1d);
var result = func.Execute(args, _context);
Assert.IsTrue((bool)result.Result);
}
[TestMethod]
public void IsNumberShouldReturnfalseWhenArgIsNonNumeric()
{
var func = new IsNumber();
var args = FunctionsHelper.CreateArgs("1");
var result = func.Execute(args, _context);
Assert.IsFalse((bool)result.Result);
}
[TestMethod]
public void IsErrorShouldReturnTrueIfArgIsAnErrorCode()
{
var args = FunctionsHelper.CreateArgs(ExcelErrorValue.Parse("#DIV/0!"));
var func = new IsError();
var result = func.Execute(args, _context);
Assert.IsTrue((bool)result.Result);
}
[TestMethod]
public void IsErrorShouldReturnFalseIfArgIsNotAnError()
{
var args = FunctionsHelper.CreateArgs("A", 1);
var func = new IsError();
var result = func.Execute(args, _context);
Assert.IsFalse((bool)result.Result);
}
[TestMethod]
public void IsTextShouldReturnTrueWhenFirstArgIsAString()
{
var args = FunctionsHelper.CreateArgs("1");
var func = new IsText();
var result = func.Execute(args, _context);
Assert.IsTrue((bool)result.Result);
}
[TestMethod]
public void IsTextShouldReturnFalseWhenFirstArgIsNotAString()
{
var args = FunctionsHelper.CreateArgs(1);
var func = new IsText();
var result = func.Execute(args, _context);
Assert.IsFalse((bool)result.Result);
}
[TestMethod]
public void IsNonTextShouldReturnFalseWhenFirstArgIsAString()
{
var args = FunctionsHelper.CreateArgs("1");
var func = new IsNonText();
var result = func.Execute(args, _context);
Assert.IsFalse((bool)result.Result);
}
[TestMethod]
public void IsNonTextShouldReturnTrueWhenFirstArgIsNotAString()
{
var args = FunctionsHelper.CreateArgs(1);
var func = new IsNonText();
var result = func.Execute(args, _context);
Assert.IsTrue((bool)result.Result);
}
[TestMethod]
public void IsOddShouldReturnCorrectResult()
{
var args = FunctionsHelper.CreateArgs(3.123);
var func = new IsOdd();
var result = func.Execute(args, _context);
Assert.IsTrue((bool)result.Result);
}
[TestMethod]
public void IsEvenShouldReturnCorrectResult()
{
var args = FunctionsHelper.CreateArgs(4.123);
var func = new IsEven();
var result = func.Execute(args, _context);
Assert.IsTrue((bool)result.Result);
}
[TestMethod]
public void IsLogicalShouldReturnCorrectResult()
{
var func = new IsLogical();
var args = FunctionsHelper.CreateArgs(1);
var result = func.Execute(args, _context);
Assert.IsFalse((bool)result.Result);
args = FunctionsHelper.CreateArgs("true");
result = func.Execute(args, _context);
Assert.IsFalse((bool)result.Result);
args = FunctionsHelper.CreateArgs(false);
result = func.Execute(args, _context);
Assert.IsTrue((bool)result.Result);
}
[TestMethod]
public void NshouldReturnCorrectResult()
{
var func = new N();
var args = FunctionsHelper.CreateArgs(1.2);
var result = func.Execute(args, _context);
Assert.AreEqual(1.2, result.Result);
args = FunctionsHelper.CreateArgs("abc");
result = func.Execute(args, _context);
Assert.AreEqual(0d, result.Result);
args = FunctionsHelper.CreateArgs(true);
result = func.Execute(args, _context);
Assert.AreEqual(1d, result.Result);
var errorCode = ExcelErrorValue.Create(eErrorType.Value);
args = FunctionsHelper.CreateArgs(errorCode);
result = func.Execute(args, _context);
Assert.AreEqual(errorCode, result.Result);
}
}
}