| 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); | |
| } | |
| } | |
| } |