| using System; | |
| using System.Collections.Generic; | |
| using System.Linq; | |
| using System.Text; | |
| using System.Threading.Tasks; | |
| using Microsoft.VisualStudio.TestTools.UnitTesting; | |
| using OfficeOpenXml; | |
| namespace EPPlusTest.FormulaParsing.Excel.Functions | |
| { | |
| [TestClass] | |
| public class SumIfsTests | |
| { | |
| private ExcelPackage _package; | |
| private ExcelWorksheet _sheet; | |
| [TestInitialize] | |
| public void Initialize() | |
| { | |
| _package = new ExcelPackage(); | |
| var s1 = _package.Workbook.Worksheets.Add("test"); | |
| s1.Cells["A1"].Value = 1; | |
| s1.Cells["A2"].Value = 2; | |
| s1.Cells["A3"].Value = 3; | |
| s1.Cells["A4"].Value = 4; | |
| s1.Cells["B1"].Value = 5; | |
| s1.Cells["B2"].Value = 6; | |
| s1.Cells["B3"].Value = 7; | |
| s1.Cells["B4"].Value = 8; | |
| s1.Cells["C1"].Value = 5; | |
| s1.Cells["C2"].Value = 6; | |
| s1.Cells["C3"].Value = 7; | |
| s1.Cells["C4"].Value = 8; | |
| _sheet = s1; | |
| } | |
| [TestCleanup] | |
| public void Cleanup() | |
| { | |
| _package.Dispose(); | |
| } | |
| [TestMethod] | |
| public void ShouldCalculateTwoCriteriaRanges() | |
| { | |
| _sheet.Cells["A5"].Formula = "SUMIFS(A1:A4;B1:B5;\">5\";C1:C5;\">4\")"; | |
| _sheet.Calculate(); | |
| Assert.AreEqual(9d, _sheet.Cells["A5"].Value); | |
| } | |
| [TestMethod] | |
| public void ShouldIgnoreErrorInCriteriaRange() | |
| { | |
| _sheet.Cells["B3"].Value = ExcelErrorValue.Create(eErrorType.Div0); | |
| _sheet.Cells["A5"].Formula = "SUMIFS(A1:A4;B1:B5;\">5\";C1:C5;\">4\")"; | |
| _sheet.Calculate(); | |
| Assert.AreEqual(6d, _sheet.Cells["A5"].Value); | |
| } | |
| [TestMethod] | |
| public void ShouldHandleDateInSumRange() | |
| { | |
| _sheet.Cells["A2"].Formula = "DATE(2015;1;1)"; | |
| _sheet.Cells["A5"].Formula = "SUMIFS(A1:A4;B1:B5;\">5\";C1:C5;\">4\")"; | |
| _sheet.Calculate(); | |
| Assert.AreEqual(42012d, _sheet.Cells["A5"].Value); | |
| } | |
| [TestMethod] | |
| public void ShouldHandleExcelRangesInCriteria() | |
| { | |
| _sheet.Cells["D1"].Value = 6; | |
| _sheet.Cells["A5"].Formula = "SUMIFS(A1:A4;B1:B5;\">5\";C1:C5;D1)"; | |
| _sheet.Calculate(); | |
| Assert.AreEqual(2d, _sheet.Cells["A5"].Value); | |
| } | |
| } | |
| } |