blob: ffd1c9ac46b017122a1300ab7adfefb147a718de [file] [log] [blame]
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);
}
}
}