﻿using System;
using System.IO;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OfficeOpenXml;

namespace EPPlusTest.FormulaParsing.IntegrationTests
{
    [TestClass]
    public class CalcExtensionsTests
    {
        [TestMethod]
        public void ShouldCalculateChainTest()
        {
            var package = new ExcelPackage(new FileInfo("c:\\temp\\chaintest.xlsx"));
            package.Workbook.Calculate();
        }

        [TestMethod]
        public void CalculateTest()
        {
            //var pck = new ExcelPackage();
            //var ws = pck.Workbook.Worksheets.Add("Calc1");

            //ws.SetValue("A1", (short)1);
            //var v = pck.Workbook.FormulaParserManager.Parse("2.5-Calc1!A1+abs(3.0)-SIN(3)");
            //Assert.AreEqual(4.358879992, Math.Round((double)v, 9));

            var pck = new ExcelPackage();
            var ws = pck.Workbook.Worksheets.Add("Calc1");

            ws.SetValue("A1", (short)1);
            var v = pck.Workbook.FormulaParserManager.Parse("2.5-Calc1!A1+ABS(-3.0)-SIN(3)*abs(5)");
            Assert.AreEqual(3.79439996, Math.Round((double)v,9));
        }

        [TestMethod]
        public void CalculateTest2()
        {
            var pck = new ExcelPackage();
            var ws = pck.Workbook.Worksheets.Add("Calc1");

            ws.SetValue("A1", (short)1);
            var v = pck.Workbook.FormulaParserManager.Parse("3*(2+5.5*2)+2*0.5+3");
            Assert.AreEqual(43, Math.Round((double)v, 9));
        }
    }
}
