|  | using System; | 
|  | using System.Collections.Generic; | 
|  | using System.Linq; | 
|  | using Microsoft.VisualStudio.TestTools.UnitTesting; | 
|  | using OfficeOpenXml; | 
|  | using OfficeOpenXml.FormulaParsing; | 
|  | using OfficeOpenXml.FormulaParsing.Excel.Functions; | 
|  | using OfficeOpenXml.FormulaParsing.ExpressionGraph; | 
|  | using OfficeOpenXml.FormulaParsing.ExpressionGraph.FunctionCompilers; | 
|  |  | 
|  | namespace EPPlusTest.FormulaParsing | 
|  | { | 
|  | [TestClass] | 
|  | public class FormulaParserManagerTests | 
|  | { | 
|  | #region test classes | 
|  |  | 
|  | private class MyFunction : ExcelFunction | 
|  | { | 
|  | public override CompileResult Execute(IEnumerable<FunctionArgument> arguments, ParsingContext context) | 
|  | { | 
|  | throw new NotImplementedException(); | 
|  | } | 
|  | } | 
|  |  | 
|  | private class MyModule : IFunctionModule | 
|  | { | 
|  | public MyModule() | 
|  | { | 
|  | Functions = new Dictionary<string, ExcelFunction>(); | 
|  | Functions.Add("MyFunction", new MyFunction()); | 
|  |  | 
|  | CustomCompilers = new Dictionary<Type, FunctionCompiler>(); | 
|  | } | 
|  | public IDictionary<string, ExcelFunction> Functions { get; } | 
|  | public IDictionary<Type, FunctionCompiler> CustomCompilers { get; } | 
|  | } | 
|  | #endregion | 
|  |  | 
|  | [TestMethod] | 
|  | public void FunctionsShouldBeCopied() | 
|  | { | 
|  | using (var package1 = new ExcelPackage()) | 
|  | { | 
|  | package1.Workbook.FormulaParserManager.LoadFunctionModule(new MyModule()); | 
|  | using (var package2 = new ExcelPackage()) | 
|  | { | 
|  | var origNumberOfFuncs = package2.Workbook.FormulaParserManager.GetImplementedFunctionNames().Count(); | 
|  |  | 
|  | // replace functions including the custom functions from package 1 | 
|  | package2.Workbook.FormulaParserManager.CopyFunctionsFrom(package1.Workbook); | 
|  |  | 
|  | // Assertions: number of functions are increased with 1, and the list of function names contains the custom function. | 
|  | Assert.AreEqual(origNumberOfFuncs + 1, package2.Workbook.FormulaParserManager.GetImplementedFunctionNames().Count()); | 
|  | Assert.IsTrue(package2.Workbook.FormulaParserManager.GetImplementedFunctionNames().Contains("myfunction")); | 
|  | } | 
|  | } | 
|  | } | 
|  | } | 
|  | } |