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