| using System; | 
 | using System.Text; | 
 | using System.Collections.Generic; | 
 | using System.Linq; | 
 | using Microsoft.VisualStudio.TestTools.UnitTesting; | 
 | using OfficeOpenXml; | 
 | using Rhino.Mocks; | 
 | using OfficeOpenXml.FormulaParsing; | 
 | using OfficeOpenXml.FormulaParsing.Exceptions; | 
 |  | 
 | namespace EPPlusTest.FormulaParsing.IntegrationTests.BuiltInFunctions | 
 | { | 
 |     [TestClass] | 
 |     public class InformationFunctionsTests : FormulaParserTestBase | 
 |     { | 
 |         private ExcelDataProvider _excelDataProvider; | 
 |  | 
 |         [TestInitialize] | 
 |         public void Setup() | 
 |         { | 
 |             _excelDataProvider = MockRepository.GenerateStub<ExcelDataProvider>(); | 
 |             _parser = new FormulaParser(_excelDataProvider); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void IsBlankShouldReturnCorrectValue() | 
 |         { | 
 |             var result = _parser.Parse("ISBLANK(A1)"); | 
 |             Assert.IsTrue((bool)result); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void IsNumberShouldReturnCorrectValue() | 
 |         { | 
 |             var result = _parser.Parse("ISNUMBER(10/2)"); | 
 |             Assert.IsTrue((bool)result); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void IsErrorShouldReturnTrueWhenDivBy0() | 
 |         { | 
 |             var result = _parser.Parse("ISERROR(10/0)"); | 
 |             Assert.IsTrue((bool)result); | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void IsTextShouldReturnTrueWhenReferencedCellContainsText() | 
 |         { | 
 |             using(var pck = new ExcelPackage()) | 
 |             { | 
 |                 var sheet = pck.Workbook.Worksheets.Add("Test"); | 
 |                 sheet.Cells["A1"].Value = "Abc"; | 
 |                 sheet.Cells["A2"].Formula = "ISTEXT(A1)"; | 
 |                 sheet.Calculate(); | 
 |                 var result = sheet.Cells["A2"].Value; | 
 |                 Assert.IsTrue((bool)result); | 
 |             } | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void IsErrShouldReturnFalseIfErrorCodeIsNa() | 
 |         { | 
 |             using (var pck = new ExcelPackage()) | 
 |             { | 
 |                 var sheet = pck.Workbook.Worksheets.Add("Test"); | 
 |                 sheet.Cells["A1"].Value = ExcelErrorValue.Parse("#N/A"); | 
 |                 sheet.Cells["A2"].Formula = "ISERR(A1)"; | 
 |                 sheet.Calculate(); | 
 |                 var result = sheet.Cells["A2"].Value; | 
 |                 Assert.IsFalse((bool)result); | 
 |             } | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void IsNaShouldReturnTrueCodeIsNa() | 
 |         { | 
 |             using (var pck = new ExcelPackage()) | 
 |             { | 
 |                 var sheet = pck.Workbook.Worksheets.Add("Test"); | 
 |                 sheet.Cells["A1"].Value = ExcelErrorValue.Parse("#N/A"); | 
 |                 sheet.Cells["A2"].Formula = "ISNA(A1)"; | 
 |                 sheet.Calculate(); | 
 |                 var result = sheet.Cells["A2"].Value; | 
 |                 Assert.IsTrue((bool)result); | 
 |             } | 
 |         } | 
 |  | 
 |         [TestMethod] | 
 |         public void ErrorTypeShouldReturnCorrectErrorCodes() | 
 |         { | 
 |             using (var pck = new ExcelPackage()) | 
 |             { | 
 |                 var sheet = pck.Workbook.Worksheets.Add("Test"); | 
 |                 sheet.Cells["A1"].Value = ExcelErrorValue.Create(eErrorType.Null); | 
 |                 sheet.Cells["B1"].Formula = "ERROR.TYPE(A1)"; | 
 |                 sheet.Cells["A2"].Value = ExcelErrorValue.Create(eErrorType.Div0); | 
 |                 sheet.Cells["B2"].Formula = "ERROR.TYPE(A2)"; | 
 |                 sheet.Cells["A3"].Value = ExcelErrorValue.Create(eErrorType.Value); | 
 |                 sheet.Cells["B3"].Formula = "ERROR.TYPE(A3)"; | 
 |                 sheet.Cells["A4"].Value = ExcelErrorValue.Create(eErrorType.Ref); | 
 |                 sheet.Cells["B4"].Formula = "ERROR.TYPE(A4)"; | 
 |                 sheet.Cells["A5"].Value = ExcelErrorValue.Create(eErrorType.Name); | 
 |                 sheet.Cells["B5"].Formula = "ERROR.TYPE(A5)"; | 
 |                 sheet.Cells["A6"].Value = ExcelErrorValue.Create(eErrorType.Num); | 
 |                 sheet.Cells["B6"].Formula = "ERROR.TYPE(A6)"; | 
 |                 sheet.Cells["A7"].Value = ExcelErrorValue.Create(eErrorType.NA); | 
 |                 sheet.Cells["B7"].Formula = "ERROR.TYPE(A7)"; | 
 |                 sheet.Cells["A8"].Value = 10; | 
 |                 sheet.Cells["B8"].Formula = "ERROR.TYPE(A8)"; | 
 |                 sheet.Calculate(); | 
 |                 var nullResult = sheet.Cells["B1"].Value; | 
 |                 var div0Result = sheet.Cells["B2"].Value; | 
 |                 var valueResult = sheet.Cells["B3"].Value; | 
 |                 var refResult = sheet.Cells["B4"].Value; | 
 |                 var nameResult = sheet.Cells["B5"].Value; | 
 |                 var numResult = sheet.Cells["B6"].Value; | 
 |                 var naResult = sheet.Cells["B7"].Value; | 
 |                 var noErrorResult = sheet.Cells["B8"].Value; | 
 |                 Assert.AreEqual(1, nullResult, "Null error was not 1"); | 
 |                 Assert.AreEqual(2, div0Result, "Div0 error was not 2"); | 
 |                 Assert.AreEqual(3, valueResult, "Value error was not 3"); | 
 |                 Assert.AreEqual(4, refResult, "Ref error was not 4"); | 
 |                 Assert.AreEqual(5, nameResult, "Name error was not 5"); | 
 |                 Assert.AreEqual(6, numResult, "Num error was not 6"); | 
 |                 Assert.AreEqual(7, naResult, "NA error was not 7"); | 
 |                 Assert.AreEqual(ExcelErrorValue.Create(eErrorType.NA), noErrorResult, "No error did not return N/A error"); | 
 |             } | 
 |         } | 
 |     } | 
 | } |