|  | using System; | 
|  | using System.Text; | 
|  | using System.Collections.Generic; | 
|  | using System.Linq; | 
|  | using Microsoft.VisualStudio.TestTools.UnitTesting; | 
|  | using OfficeOpenXml; | 
|  | using OfficeOpenXml.DataValidation; | 
|  | using System.IO; | 
|  |  | 
|  | namespace EPPlusTest.DataValidation | 
|  | { | 
|  | [TestClass] | 
|  | public class DataValidationTests : ValidationTestBase | 
|  | { | 
|  | [TestInitialize] | 
|  | public void Setup() | 
|  | { | 
|  | SetupTestData(); | 
|  | } | 
|  |  | 
|  | [TestCleanup] | 
|  | public void Cleanup() | 
|  | { | 
|  | CleanupTestData(); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void DataValidations_ShouldSetOperatorFromExistingXml() | 
|  | { | 
|  | // Arrange | 
|  | LoadXmlTestData("A1", "whole", "greaterThanOrEqual", "1"); | 
|  | // Act | 
|  | var validation = new ExcelDataValidationInt(_sheet, "A1", ExcelDataValidationType.Whole, _dataValidationNode, _namespaceManager); | 
|  | // Assert | 
|  | Assert.AreEqual(ExcelDataValidationOperator.greaterThanOrEqual, validation.Operator); | 
|  | } | 
|  |  | 
|  | [TestMethod, ExpectedException(typeof(InvalidOperationException))] | 
|  | public void DataValidations_ShouldThrowIfOperatorIsEqualAndFormula1IsEmpty() | 
|  | { | 
|  | var validations = _sheet.DataValidations.AddIntegerValidation("A1"); | 
|  | validations.Operator = ExcelDataValidationOperator.equal; | 
|  | validations.Validate(); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void DataValidations_ShouldSetShowErrorMessageFromExistingXml() | 
|  | { | 
|  | // Arrange | 
|  | LoadXmlTestData("A1", "whole", "1", true, false); | 
|  | // Act | 
|  | var validation = new ExcelDataValidationInt(_sheet, "A1", ExcelDataValidationType.Whole, _dataValidationNode, _namespaceManager); | 
|  | // Assert | 
|  | Assert.IsTrue(validation.ShowErrorMessage ?? false); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void DataValidations_ShouldSetShowInputMessageFromExistingXml() | 
|  | { | 
|  | // Arrange | 
|  | LoadXmlTestData("A1", "whole", "1", false, true); | 
|  | // Act | 
|  | var validation = new ExcelDataValidationInt(_sheet, "A1", ExcelDataValidationType.Whole, _dataValidationNode, _namespaceManager); | 
|  | // Assert | 
|  | Assert.IsTrue(validation.ShowInputMessage ?? false); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void DataValidations_ShouldSetPromptFromExistingXml() | 
|  | { | 
|  | // Arrange | 
|  | LoadXmlTestData("A1", "whole", "1", "Prompt", "PromptTitle", "Error", "ErrorTitle"); | 
|  | // Act | 
|  | var validation = new ExcelDataValidationInt(_sheet, "A1", ExcelDataValidationType.Whole, _dataValidationNode, _namespaceManager); | 
|  | // Assert | 
|  | Assert.AreEqual("Prompt", validation.Prompt); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void DataValidations_ShouldSetPromptTitleFromExistingXml() | 
|  | { | 
|  | // Arrange | 
|  | LoadXmlTestData("A1", "whole", "1", "Prompt", "PromptTitle", "Error", "ErrorTitle"); | 
|  | // Act | 
|  | var validation = new ExcelDataValidationInt(_sheet, "A1", ExcelDataValidationType.Whole, _dataValidationNode, _namespaceManager); | 
|  | // Assert | 
|  | Assert.AreEqual("PromptTitle", validation.PromptTitle); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void DataValidations_ShouldSetErrorFromExistingXml() | 
|  | { | 
|  | // Arrange | 
|  | LoadXmlTestData("A1", "whole", "1", "Prompt", "PromptTitle", "Error", "ErrorTitle"); | 
|  | // Act | 
|  | var validation = new ExcelDataValidationInt(_sheet, "A1", ExcelDataValidationType.Whole, _dataValidationNode, _namespaceManager); | 
|  | // Assert | 
|  | Assert.AreEqual("Error", validation.Error); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void DataValidations_ShouldSetErrorTitleFromExistingXml() | 
|  | { | 
|  | // Arrange | 
|  | LoadXmlTestData("A1", "whole", "1", "Prompt", "PromptTitle", "Error", "ErrorTitle"); | 
|  | // Act | 
|  | var validation = new ExcelDataValidationInt(_sheet, "A1", ExcelDataValidationType.Whole, _dataValidationNode, _namespaceManager); | 
|  | // Assert | 
|  | Assert.AreEqual("ErrorTitle", validation.ErrorTitle); | 
|  | } | 
|  |  | 
|  | [TestMethod, ExpectedException(typeof(InvalidOperationException))] | 
|  | public void DataValidations_ShouldThrowIfOperatorIsBetweenAndFormula2IsEmpty() | 
|  | { | 
|  | var validation = _sheet.DataValidations.AddIntegerValidation("A1"); | 
|  | validation.Formula.Value = 1; | 
|  | validation.Operator = ExcelDataValidationOperator.between; | 
|  | validation.Validate(); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void DataValidations_ShouldAcceptOneItemOnly() | 
|  | { | 
|  | var validation = _sheet.DataValidations.AddListValidation("A1"); | 
|  | validation.Formula.Values.Add("1"); | 
|  | validation.Validate(); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void ExcelDataValidation_ShouldReplaceLastPartInWholeColumnRangeWithMaxNumberOfRowsOneColumn() | 
|  | { | 
|  | // Act | 
|  | var validation = _sheet.DataValidations.AddIntegerValidation("A:A"); | 
|  |  | 
|  | // Assert | 
|  | Assert.AreEqual("A1:A" + ExcelPackage.MaxRows.ToString(), validation.Address.Address); | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void ExcelDataValidation_ShouldReplaceLastPartInWholeColumnRangeWithMaxNumberOfRowsDifferentColumns() | 
|  | { | 
|  | // Act | 
|  | var validation = _sheet.DataValidations.AddIntegerValidation("A:B"); | 
|  |  | 
|  | // Assert | 
|  | Assert.AreEqual(string.Format("A1:B{0}", ExcelPackage.MaxRows), validation.Address.Address); | 
|  | } | 
|  |  | 
|  | } | 
|  | } |