blob: 1abd928dafa7d12a6c2dafda2f622ae26f1a17b9 [file] [log] [blame]
using System;
using System.IO;
using EPPlusTest.FormulaParsing.TestHelpers;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OfficeOpenXml;
using OfficeOpenXml.FormulaParsing;
using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
using OfficeOpenXml.FormulaParsing.Exceptions;
namespace EPPlusTest.FormulaParsing.Excel.Functions.RefAndLookup
{
[TestClass]
public class ChooseTests
{
private ParsingContext _parsingContext;
private ExcelPackage _package;
private ExcelWorksheet _worksheet;
[TestInitialize]
public void Initialize()
{
_parsingContext = ParsingContext.Create();
_package = new ExcelPackage(new MemoryStream());
_worksheet = _package.Workbook.Worksheets.Add("test");
}
[TestCleanup]
public void Cleanup()
{
_package.Dispose();
}
[TestMethod]
public void ChooseSingleValue()
{
fillChooseOptions();
_worksheet.Cells["B1"].Formula = "CHOOSE(4, A1, A2, A3, A4, A5)";
_worksheet.Calculate();
Assert.AreEqual("5", _worksheet.Cells["B1"].Value);
}
[TestMethod]
public void ChooseSingleFormula()
{
fillChooseOptions();
_worksheet.Cells["B1"].Formula = "CHOOSE(6, A1, A2, A3, A4, A5, A6)";
_worksheet.Calculate();
Assert.AreEqual("12", _worksheet.Cells["B1"].Value);
}
[TestMethod]
public void ChooseMultipleValues()
{
fillChooseOptions();
_worksheet.Cells["B1"].Formula = "SUM(CHOOSE({1,3,4}, A1, A2, A3, A4, A5))";
_worksheet.Calculate();
Assert.AreEqual(9D, _worksheet.Cells["B1"].Value);
}
[TestMethod]
public void ChooseValueAndFormula()
{
fillChooseOptions();
_worksheet.Cells["B1"].Formula = "SUM(CHOOSE({2,6}, A1, A2, A3, A4, A5, A6))";
_worksheet.Calculate();
Assert.AreEqual(14D, _worksheet.Cells["B1"].Value);
}
private void fillChooseOptions()
{
_worksheet.Cells["A1"].Value = 1d;
_worksheet.Cells["A2"].Value = 2d;
_worksheet.Cells["A3"].Value = 3d;
_worksheet.Cells["A4"].Value = 5d;
_worksheet.Cells["A5"].Value = 7d;
_worksheet.Cells["A6"].Formula = "A4 + A5";
}
}
}