blob: 85bf8c0f9b4abe806d33fa98f89a194edae92595 [file] [log] [blame]
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);
}
}
}