public void ShouldReturnModuleCodeWhenBuild()
        {
            var sheetBuilder    = new SheetBuilder();
            var workbookBuilder = new WorkbookBuilder(sheetBuilder);
            var moduleBuilder   = new AssemblyCodeBuilder(workbookBuilder);

            var cSharpModule = moduleBuilder.Build("UnitTest", workbook);

            Assert.NotNull(cSharpModule);
        }
        public void ShouldReturnAssemblyWhenCompiled()
        {
            var sheetBuilder        = new SheetBuilder();
            var workbookBuilder     = new WorkbookBuilder(sheetBuilder);
            var assemblyCodeBuilder = new AssemblyCodeBuilder(workbookBuilder);

            const string assemblyName  = "UnitTest";
            var          assemblyCode  = assemblyCodeBuilder.Build(assemblyName, workbook);
            var          assemblyBytes = CSharpCodeCompiler.GetAssemblyBytes(assemblyName, assemblyCode).ToArray();

            Assert.NotEmpty(assemblyBytes);

            var assembly         = Assembly.Load(assemblyBytes);
            var compiledWorkbook = assembly.CreateInstance($"{assemblyName}.Workbook") as IWorkbook;

            Assert.NotNull(compiledWorkbook);

            var sheet = compiledWorkbook.GetSheet(SheetName);

            sheet.Evaluate();
            var value = sheet.GetNumeric("A1");

            Assert.Equal(84, value);
        }