using ClosedXML.Excel;
using NUnit.Framework;
using System;
using System.Globalization;
using System.Threading;
namespace ClosedXML_Tests.Excel.CalcEngine
{
[TestFixture]
public class InformationTests
{
[OneTimeSetUp]
public void SetCultureInfo()
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
}
#region IsBlank Tests
[Test]
public void IsBlank_MultipleAllEmpty_true()
{
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet");
var actual = ws.Evaluate("=IsBlank(A1:A3)");
Assert.AreEqual(true, actual);
}
}
[Test]
public void IsBlank_MultipleAllFill_false()
{
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet");
ws.Cell("A1").Value = "1";
ws.Cell("A2").Value = "1";
ws.Cell("A3").Value = "1";
var actual = ws.Evaluate("=IsBlank(A1:A3)");
Assert.AreEqual(false, actual);
}
}
[Test]
public void IsBlank_MultipleMixedFill_false()
{
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet");
ws.Cell("A1").Value = "1";
ws.Cell("A3").Value = "1";
var actual = ws.Evaluate("=IsBlank(A1:A3)");
Assert.AreEqual(false, actual);
}
}
[Test]
public void IsBlank_Single_false()
{
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet");
ws.Cell("A1").Value = " ";
var actual = ws.Evaluate("=IsBlank(A1)");
Assert.AreEqual(false, actual);
}
}
[Test]
public void IsBlank_Single_true()
{
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet");
var actual = ws.Evaluate("=IsBlank(A1)");
Assert.AreEqual(true, actual);
}
}
#endregion IsBlank Tests
#region IsEven Tests
[Test]
public void IsEven_Single_False()
{
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet");
ws.Cell("A1").Value = 1;
ws.Cell("A2").Value = 1.2;
ws.Cell("A3").Value = 3;
var actual = ws.Evaluate("=IsEven(A1)");
Assert.AreEqual(false, actual);
actual = ws.Evaluate("=IsEven(A2)");
Assert.AreEqual(false, actual);
actual = ws.Evaluate("=IsEven(A3)");
Assert.AreEqual(false, actual);
}
}
[Test]
public void IsEven_Single_True()
{
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet");
ws.Cell("A1").Value = 4;
ws.Cell("A2").Value = 0.2;
ws.Cell("A3").Value = 12.2;
var actual = ws.Evaluate("=IsEven(A1)");
Assert.AreEqual(true, actual);
actual = ws.Evaluate("=IsEven(A2)");
Assert.AreEqual(true, actual);
actual = ws.Evaluate("=IsEven(A3)");
Assert.AreEqual(true, actual);
}
}
#endregion IsEven Tests
#region IsLogical Tests
[Test]
public void IsLogical_Simpe_False()
{
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet");
ws.Cell("A1").Value = 123;
var actual = ws.Evaluate("=IsLogical(A1)");
Assert.AreEqual(false, actual);
}
}
[Test]
public void IsLogical_Simple_True()
{
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet");
ws.Cell("A1").Value = true;
var actual = ws.Evaluate("=IsLogical(A1)");
Assert.AreEqual(true, actual);
}
}
#endregion IsLogical Tests
#region IsNotText Tests
[Test]
public void IsNotText_Simple_false()
{
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet");
ws.Cell("A1").Value = "asd";
var actual = ws.Evaluate("=IsNonText(A1)");
Assert.AreEqual(false, actual);
}
}
[Test]
public void IsNotText_Simple_true()
{
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet");
ws.Cell("A1").Value = "123"; //Double Value
ws.Cell("A2").Value = DateTime.Now; //Date Value
ws.Cell("A3").Value = "12,235.5"; //Comma Formatting
ws.Cell("A4").Value = "$12,235.5"; //Currency Value
ws.Cell("A5").Value = true; //Bool Value
ws.Cell("A6").Value = "12%"; //Percentage Value
var actual = ws.Evaluate("=IsNonText(A1)");
Assert.AreEqual(true, actual);
actual = ws.Evaluate("=IsNonText(A2)");
Assert.AreEqual(true, actual);
actual = ws.Evaluate("=IsNonText(A3)");
Assert.AreEqual(true, actual);
actual = ws.Evaluate("=IsNonText(A4)");
Assert.AreEqual(true, actual);
actual = ws.Evaluate("=IsNonText(A5)");
Assert.AreEqual(true, actual);
actual = ws.Evaluate("=IsNonText(A6)");
Assert.AreEqual(true, actual);
}
}
#endregion IsNotText Tests
#region IsNumber Tests
[Test]
public void IsNumber_Simple_false()
{
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet");
ws.Cell("A1").Value = "asd"; //String Value
ws.Cell("A2").Value = true; //Bool Value
var actual = ws.Evaluate("=IsNumber(A1)");
Assert.AreEqual(false, actual);
actual = ws.Evaluate("=IsNumber(A2)");
Assert.AreEqual(false, actual);
}
}
[Test]
public void IsNumber_Simple_true()
{
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet");
ws.Cell("A1").Value = "123"; //Double Value
ws.Cell("A2").Value = DateTime.Now; //Date Value
ws.Cell("A3").Value = "12,235.5"; //Coma Formatting
ws.Cell("A4").Value = "$12,235.5"; //Currency Value
ws.Cell("A5").Value = "12%"; //Percentage Value
var actual = ws.Evaluate("=IsNumber(A1)");
Assert.AreEqual(true, actual);
actual = ws.Evaluate("=IsNumber(A2)");
Assert.AreEqual(true, actual);
actual = ws.Evaluate("=IsNumber(A3)");
Assert.AreEqual(true, actual);
actual = ws.Evaluate("=IsNumber(A4)");
Assert.AreEqual(true, actual);
actual = ws.Evaluate("=IsNumber(A5)");
Assert.AreEqual(true, actual);
}
}
#endregion IsNumber Tests
#region IsOdd Test
[Test]
public void IsOdd_Simple_false()
{
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet");
ws.Cell("A1").Value = 4;
ws.Cell("A2").Value = 0.2;
ws.Cell("A3").Value = 12.2;
var actual = ws.Evaluate("=IsOdd(A1)");
Assert.AreEqual(false, actual);
actual = ws.Evaluate("=IsOdd(A2)");
Assert.AreEqual(false, actual);
actual = ws.Evaluate("=IsOdd(A3)");
Assert.AreEqual(false, actual);
}
}
[Test]
public void IsOdd_Simple_true()
{
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet");
ws.Cell("A1").Value = 1;
ws.Cell("A2").Value = 1.2;
ws.Cell("A3").Value = 3;
var actual = ws.Evaluate("=IsOdd(A1)");
Assert.AreEqual(true, actual);
actual = ws.Evaluate("=IsOdd(A2)");
Assert.AreEqual(true, actual);
actual = ws.Evaluate("=IsOdd(A3)");
Assert.AreEqual(true, actual);
}
}
#endregion IsOdd Test
#region IsText Tests
[Test]
public void IsText_Simple_false()
{
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet");
ws.Cell("A1").Value = "123"; //Double Value
ws.Cell("A2").Value = DateTime.Now; //Date Value
ws.Cell("A3").Value = "12,235.5"; //Comma Formatting
ws.Cell("A4").Value = "$12,235.5"; //Currency Value
ws.Cell("A5").Value = true; //Bool Value
ws.Cell("A6").Value = "12%"; //Percentage Value
var actual = ws.Evaluate("=IsText(A1)");
Assert.AreEqual(false, actual);
actual = ws.Evaluate("=IsText(A2)");
Assert.AreEqual(false, actual);
actual = ws.Evaluate("=IsText(A3)");
Assert.AreEqual(false, actual);
actual = ws.Evaluate("=IsText(A4)");
Assert.AreEqual(false, actual);
actual = ws.Evaluate("=IsText(A5)");
Assert.AreEqual(false, actual);
actual = ws.Evaluate("=IsText(A6)");
Assert.AreEqual(false, actual);
}
}
[Test]
public void IsText_Simple_true()
{
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet");
ws.Cell("A1").Value = "asd";
var actual = ws.Evaluate("=IsText(A1)");
Assert.AreEqual(true, actual);
}
}
#endregion IsText Tests
#region N Tests
[Test]
public void N_Date_SerialNumber()
{
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet");
var testedDate = DateTime.Now;
ws.Cell("A1").Value = testedDate;
var actual = ws.Evaluate("=N(A1)");
Assert.AreEqual(testedDate.ToOADate(), actual);
}
}
[Test]
public void N_False_Zero()
{
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet");
ws.Cell("A1").Value = false;
var actual = ws.Evaluate("=N(A1)");
Assert.AreEqual(0, actual);
}
}
[Test]
public void N_Number_Number()
{
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet");
var testedValue = 123;
ws.Cell("A1").Value = testedValue;
var actual = ws.Evaluate("=N(A1)");
Assert.AreEqual(testedValue, actual);
}
}
[Test]
public void N_String_Zero()
{
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet");
ws.Cell("A1").Value = "asd";
var actual = ws.Evaluate("=N(A1)");
Assert.AreEqual(0, actual);
}
}
[Test]
public void N_True_One()
{
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet");
ws.Cell("A1").Value = true;
var actual = ws.Evaluate("=N(A1)");
Assert.AreEqual(1, actual);
}
}
#endregion N Tests
}
}