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