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