diff --git a/ClosedXML_Tests/Excel/CalcEngine/MathTrigTests.cs b/ClosedXML_Tests/Excel/CalcEngine/MathTrigTests.cs index c3cd7ce..1832b9d 100644 --- a/ClosedXML_Tests/Excel/CalcEngine/MathTrigTests.cs +++ b/ClosedXML_Tests/Excel/CalcEngine/MathTrigTests.cs @@ -217,6 +217,82 @@ Assert.AreEqual(0.7, actual, tolerance); } + /// + /// refers to Example 1 from the Excel documentation, + /// + /// + /// + /// + [TestCase(63000, "SUMIF(A1:A4,\">160000\", B1:B4)")] + [TestCase(900000, "SUMIF(A1:A4,\">160000\")")] + [TestCase(21000, "SUMIF(A1:A4, 300000, B1:B4)")] + [TestCase(28000, "SUMIF(A1:A4, \">\" &C1, B1:B4)")] + public void SumIf_ReturnsCorrectValues_ReferenceExample1FromMicrosoft(int expectedOutcome, string formula) + { + using(var wb = new XLWorkbook()) + { + wb.ReferenceStyle = XLReferenceStyle.A1; + + var ws = wb.AddWorksheet("Sheet1"); + ws.Cell(1, 1).Value = 100000; + ws.Cell(1, 2).Value = 7000; + ws.Cell(2, 1).Value = 200000; + ws.Cell(2, 2).Value = 14000; + ws.Cell(3, 1).Value = 300000; + ws.Cell(3, 2).Value = 21000; + ws.Cell(4, 1).Value = 400000; + ws.Cell(4, 2).Value = 28000; + + ws.Cell(1, 3).Value = 300000; + + Assert.AreEqual(expectedOutcome, (double)ws.Evaluate(formula)); + } + } + + /// + /// refers to Example 2 from the Excel documentation, + /// + /// + /// + /// + [TestCase( 2000, "SUMIF(A2:A7,\"Fruits\", C2:C7)")] + [TestCase(12000, "SUMIF(A2:A7,\"Vegetables\", C2:C7)")] + [TestCase( 4300, "SUMIF(B2:B7, \"*es\", C2:C7)")] + [TestCase( 400, "SUMIF(A2:A7, \"\", C2:C7)")] + public void SumIf_ReturnsCorrectValues_ReferenceExample2FromMicrosoft(int expectedOutcome, string formula) + { + using (var wb = new XLWorkbook()) + { + wb.ReferenceStyle = XLReferenceStyle.A1; + + var ws = wb.AddWorksheet("Sheet1"); + ws.Cell(2, 1).Value = "Vegetables"; + ws.Cell(3, 1).Value = "Vegetables"; + ws.Cell(4, 1).Value = "Fruits"; + ws.Cell(5, 1).Value = ""; + ws.Cell(6, 1).Value = "Vegetables"; + ws.Cell(7, 1).Value = "Fruits"; + + ws.Cell(2, 2).Value = "Tomatoes"; + ws.Cell(3, 2).Value = "Celery"; + ws.Cell(4, 2).Value = "Oranges"; + ws.Cell(5, 2).Value = "Butter"; + ws.Cell(6, 2).Value = "Carrots"; + ws.Cell(7, 2).Value = "Apples"; + + ws.Cell(2, 3).Value = 2300; + ws.Cell(3, 3).Value = 5500; + ws.Cell(4, 3).Value = 800; + ws.Cell(5, 3).Value = 400; + ws.Cell(6, 3).Value = 4200; + ws.Cell(7, 3).Value = 1200; + + ws.Cell(1, 3).Value = 300000; + + Assert.AreEqual(expectedOutcome, (double)ws.Evaluate(formula)); + } + } + [Test] public void SumProduct() { diff --git a/ClosedXML_Tests/Excel/CalcEngine/StatisticalTests.cs b/ClosedXML_Tests/Excel/CalcEngine/StatisticalTests.cs index 2550868..bc744a7 100644 --- a/ClosedXML_Tests/Excel/CalcEngine/StatisticalTests.cs +++ b/ClosedXML_Tests/Excel/CalcEngine/StatisticalTests.cs @@ -91,6 +91,21 @@ Assert.AreEqual(24, value); } + [TestCase(@"=COUNTIF(Data!E:E, ""J*"")", 13)] + [TestCase(@"=COUNTIF(Data!E:E, ""*i*"")", 21)] + [TestCase(@"=COUNTIF(Data!E:E, ""*in*"")", 9)] + [TestCase(@"=COUNTIF(Data!E:E, ""*i*l"")", 9)] + [TestCase(@"=COUNTIF(Data!E:E, ""*i?e*"")", 9)] + [TestCase(@"=COUNTIF(Data!E:E, ""*o??s*"")", 10)] + [TestCase(@"=COUNTIF(Data!E:E, """")", 0)] + public void CountIf_ConditionWithWildcards(string formula, int expectedResult) + { + var ws = workbook.Worksheets.First(); + + int value = ws.Evaluate(formula).CastTo(); + Assert.AreEqual(expectedResult, value); + } + [OneTimeTearDown] public void Dispose() {