blob: 27a6f2a3d807395caefb1dbe01bf00210fa0e425 [file] [log] [blame]
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OfficeOpenXml;
using OfficeOpenXml.FormulaParsing.Exceptions;
namespace EPPlusTest.FormulaParsing.Excel.Functions
{
[TestClass]
public class CountIfsTests
{
private ExcelPackage _package;
private ExcelWorksheet _worksheet;
[TestInitialize]
public void Initialize()
{
_package = new ExcelPackage();
_worksheet = _package.Workbook.Worksheets.Add("testsheet");
}
[TestCleanup]
public void Cleanup()
{
_package.Dispose();
}
[TestMethod]
public void ShouldHandleSingleNumericCriteria()
{
_worksheet.Cells["A1"].Value = 1;
_worksheet.Cells["A2"].Value = 1;
_worksheet.Cells["A3"].Value = 2;
_worksheet.Cells["A4"].Formula = "COUNTIFS(A1:A3, 1)";
_worksheet.Calculate();
Assert.AreEqual(2d, _worksheet.Cells["A4"].Value);
}
[TestMethod]
public void ShouldHandleSingleRangeCriteria()
{
_worksheet.Cells["A1"].Value = 1;
_worksheet.Cells["A2"].Value = 1;
_worksheet.Cells["A3"].Value = 2;
_worksheet.Cells["B1"].Value = 1;
_worksheet.Cells["A4"].Formula = "COUNTIFS(A1:A3, B1)";
_worksheet.Calculate();
Assert.AreEqual(2d, _worksheet.Cells["A4"].Value);
}
[TestMethod]
public void ShouldHandleSingleNumericWildcardCriteria()
{
_worksheet.Cells["A1"].Value = 1;
_worksheet.Cells["A2"].Value = 2;
_worksheet.Cells["A3"].Value = 3;
_worksheet.Cells["A4"].Formula = "COUNTIFS(A1:A3, \"<3\")";
_worksheet.Calculate();
Assert.AreEqual(2d, _worksheet.Cells["A4"].Value);
}
[TestMethod]
public void ShouldHandleSingleStringCriteria()
{
_worksheet.Cells["A1"].Value = "abc";
_worksheet.Cells["A2"].Value = "def";
_worksheet.Cells["A3"].Value = "def";
_worksheet.Cells["A4"].Formula = "COUNTIFS(A1:A3, \"def\")";
_worksheet.Calculate();
Assert.AreEqual(2d, _worksheet.Cells["A4"].Value);
}
[TestMethod]
public void ShouldHandleSingleStringWildcardCriteria()
{
_worksheet.Cells["A1"].Value = "abc";
_worksheet.Cells["A2"].Value = "def";
_worksheet.Cells["A3"].Value = "def";
_worksheet.Cells["A4"].Formula = "COUNTIFS(A1:A3, \"d*f\")";
_worksheet.Calculate();
Assert.AreEqual(2d, _worksheet.Cells["A4"].Value);
}
[TestMethod]
public void ShouldHandleNullRangeCriteria()
{
_worksheet.Cells["A1"].Value = null;
_worksheet.Cells["A2"].Value = 1;
_worksheet.Cells["A3"].Value = null;
_worksheet.Cells["A4"].Formula = "COUNTIFS(A1:A3, B1)";
_worksheet.Calculate();
Assert.AreEqual(0d, _worksheet.Cells["A4"].Value);
}
[TestMethod]
public void ShouldHandleMultipleRangesAndCriterias()
{
_worksheet.Cells["A1"].Value = "abc";
_worksheet.Cells["A2"].Value = "def";
_worksheet.Cells["A3"].Value = "def";
_worksheet.Cells["A4"].Value = "def";
_worksheet.Cells["B1"].Value = 1;
_worksheet.Cells["B2"].Value = 2;
_worksheet.Cells["B3"].Value = 3;
_worksheet.Cells["B4"].Value = 2;
_worksheet.Cells["C1"].Value = null;
_worksheet.Cells["C2"].Value = 200;
_worksheet.Cells["C3"].Value = 3;
_worksheet.Cells["C4"].Value = 2;
_worksheet.Cells["A5"].Formula = "COUNTIFS(A1:A4, \"d*f\", B1:B4; 2; C1:C4; 200)";
_worksheet.Calculate();
Assert.AreEqual(1d, _worksheet.Cells["A5"].Value);
}
[TestMethod]
public void ShouldSetErrorValueIfNumberOfCellsInRangesDiffer()
{
_worksheet.Cells["A1"].Value = "abc";
_worksheet.Cells["A2"].Value = "def";
_worksheet.Cells["A3"].Value = "def";
_worksheet.Cells["A4"].Value = "def";
_worksheet.Cells["B1"].Value = 1;
_worksheet.Cells["B2"].Value = 2;
_worksheet.Cells["B3"].Value = 3;
_worksheet.Cells["B4"].Value = 2;
_worksheet.Cells["A5"].Formula = "COUNTIFS(A1:A4, \"d*f\", B1:B3; 2)";
_worksheet.Calculate();
Assert.AreEqual(ExcelErrorValue.Create(eErrorType.Value), _worksheet.Cells["A5"].Value);
}
}
}