| using System; |
| using System.Text; |
| using System.Collections.Generic; |
| using System.Linq; |
| using Microsoft.VisualStudio.TestTools.UnitTesting; |
| using OfficeOpenXml.FormulaParsing; |
| using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; |
| using OfficeOpenXml.FormulaParsing.ExcelUtilities; |
| using EPPlusTest.FormulaParsing.TestHelpers; |
| using OfficeOpenXml.FormulaParsing.Excel; |
| using OfficeOpenXml; |
| using OfficeOpenXml.FormulaParsing.Exceptions; |
| |
| namespace EPPlusTest.Excel.Functions |
| { |
| [TestClass] |
| public class SubtotalTests |
| { |
| private ParsingContext _context; |
| |
| [TestInitialize] |
| public void Setup() |
| { |
| _context = ParsingContext.Create(); |
| _context.Scopes.NewScope(RangeAddress.Empty); |
| } |
| |
| [TestMethod, ExpectedException(typeof(ExcelErrorValueException))] |
| public void ShouldThrowIfInvalidFuncNumber() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(139, 1); |
| func.Execute(args, _context); |
| } |
| |
| [TestMethod] |
| public void ShouldCalculateAverageWhenCalcTypeIs1() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(1, 10, 20, 30, 40, 50); |
| var result = func.Execute(args, _context); |
| Assert.AreEqual(30d, result.Result); |
| } |
| |
| [TestMethod] |
| public void ShouldCalculateCountWhenCalcTypeIs2() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(2, 10, 20, 30, 40, 50); |
| var result = func.Execute(args, _context); |
| Assert.AreEqual(5d, result.Result); |
| } |
| |
| [TestMethod] |
| public void ShouldCalculateCountAWhenCalcTypeIs3() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(3, 10, 20, 30, 40, 50); |
| var result = func.Execute(args, _context); |
| Assert.AreEqual(5d, result.Result); |
| } |
| |
| [TestMethod] |
| public void ShouldCalculateMaxWhenCalcTypeIs4() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(4, 10, 20, 30, 40, 50); |
| var result = func.Execute(args, _context); |
| Assert.AreEqual(50d, result.Result); |
| } |
| |
| [TestMethod] |
| public void ShouldCalculateMinWhenCalcTypeIs5() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(5, 10, 20, 30, 40, 50); |
| var result = func.Execute(args, _context); |
| Assert.AreEqual(10d, result.Result); |
| } |
| |
| [TestMethod] |
| public void ShouldCalculateProductWhenCalcTypeIs6() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(6, 10, 20, 30, 40, 50); |
| var result = func.Execute(args, _context); |
| Assert.AreEqual(12000000d, result.Result); |
| } |
| |
| [TestMethod] |
| public void ShouldCalculateStdevWhenCalcTypeIs7() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(7, 10, 20, 30, 40, 50); |
| var result = func.Execute(args, _context); |
| var resultRounded = Math.Round((double)result.Result, 5); |
| Assert.AreEqual(15.81139d, resultRounded); |
| } |
| |
| [TestMethod] |
| public void ShouldCalculateStdevPWhenCalcTypeIs8() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(8, 10, 20, 30, 40, 50); |
| var result = func.Execute(args, _context); |
| var resultRounded = Math.Round((double)result.Result, 8); |
| Assert.AreEqual(14.14213562, resultRounded); |
| } |
| |
| [TestMethod] |
| public void ShouldCalculateSumWhenCalcTypeIs9() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(9, 10, 20, 30, 40, 50); |
| var result = func.Execute(args, _context); |
| Assert.AreEqual(150d, result.Result); |
| } |
| |
| [TestMethod] |
| public void ShouldCalculateVarWhenCalcTypeIs10() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(10, 10, 20, 30, 40, 50); |
| var result = func.Execute(args, _context); |
| Assert.AreEqual(250d, result.Result); |
| } |
| |
| [TestMethod] |
| public void ShouldCalculateVarPWhenCalcTypeIs11() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(11, 10, 20, 30, 40, 50); |
| var result = func.Execute(args, _context); |
| Assert.AreEqual(200d, result.Result); |
| } |
| |
| [TestMethod] |
| public void ShouldCalculateAverageWhenCalcTypeIs101() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(101, 10, 20, 30, 40, 50); |
| var result = func.Execute(args, _context); |
| Assert.AreEqual(30d, result.Result); |
| } |
| |
| [TestMethod] |
| public void ShouldCalculateCountWhenCalcTypeIs102() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(102, 10, 20, 30, 40, 50); |
| var result = func.Execute(args, _context); |
| Assert.AreEqual(5d, result.Result); |
| } |
| |
| [TestMethod] |
| public void ShouldCalculateCountAWhenCalcTypeIs103() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(103, 10, 20, 30, 40, 50); |
| var result = func.Execute(args, _context); |
| Assert.AreEqual(5d, result.Result); |
| } |
| |
| [TestMethod] |
| public void ShouldCalculateMaxWhenCalcTypeIs104() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(104, 10, 20, 30, 40, 50); |
| var result = func.Execute(args, _context); |
| Assert.AreEqual(50d, result.Result); |
| } |
| |
| [TestMethod] |
| public void ShouldCalculateMinWhenCalcTypeIs105() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(105, 10, 20, 30, 40, 50); |
| var result = func.Execute(args, _context); |
| Assert.AreEqual(10d, result.Result); |
| } |
| |
| [TestMethod] |
| public void ShouldCalculateProductWhenCalcTypeIs106() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(106, 10, 20, 30, 40, 50); |
| var result = func.Execute(args, _context); |
| Assert.AreEqual(12000000d, result.Result); |
| } |
| |
| [TestMethod] |
| public void ShouldCalculateStdevWhenCalcTypeIs107() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(107, 10, 20, 30, 40, 50); |
| var result = func.Execute(args, _context); |
| var resultRounded = Math.Round((double)result.Result, 5); |
| Assert.AreEqual(15.81139d, resultRounded); |
| } |
| |
| [TestMethod] |
| public void ShouldCalculateStdevPWhenCalcTypeIs108() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(108, 10, 20, 30, 40, 50); |
| var result = func.Execute(args, _context); |
| var resultRounded = Math.Round((double)result.Result, 8); |
| Assert.AreEqual(14.14213562, resultRounded); |
| } |
| |
| [TestMethod] |
| public void ShouldCalculateSumWhenCalcTypeIs109() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(109, 10, 20, 30, 40, 50); |
| var result = func.Execute(args, _context); |
| Assert.AreEqual(150d, result.Result); |
| } |
| |
| [TestMethod] |
| public void ShouldCalculateVarWhenCalcTypeIs110() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(110, 10, 20, 30, 40, 50, 51); |
| args.Last().SetExcelStateFlag(ExcelCellState.HiddenCell); |
| var result = func.Execute(args, _context); |
| Assert.AreEqual(250d, result.Result); |
| } |
| |
| [TestMethod] |
| public void ShouldCalculateVarPWhenCalcTypeIs111() |
| { |
| var func = new Subtotal(); |
| var args = FunctionsHelper.CreateArgs(111, 10, 20, 30, 40, 50); |
| var result = func.Execute(args, _context); |
| Assert.AreEqual(200d, result.Result); |
| } |
| } |
| } |