|  | 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"); | 
|  | } | 
|  | } | 
|  | } | 
|  | } |