using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace EPPlusTest.DataValidation
{
    [TestClass]
    public class RangeBaseTests : ValidationTestBase
    {
        [TestInitialize]
        public void Setup()
        {
            SetupTestData();
        }

        [TestCleanup]
        public void Cleanup()
        {
            CleanupTestData();
        }

        [TestMethod]
        public void RangeBase_AddIntegerValidation_ValidationIsAdded()
        {
            // Act
            _sheet.Cells["A1:A2"].DataValidation.AddIntegerDataValidation();

            // Assert
            Assert.AreEqual(1, _sheet.DataValidations.Count);
        }

        [TestMethod]
        public void RangeBase_AddIntegerValidation_AddressIsCorrect()
        {
            // Act
            _sheet.Cells["A1:A2"].DataValidation.AddIntegerDataValidation();

            // Assert
            Assert.AreEqual("A1:A2", _sheet.DataValidations[0].Address.Address);
        }

        [TestMethod]
        public void RangeBase_AddDecimalValidation_ValidationIsAdded()
        {
            // Act
            _sheet.Cells["A1:A2"].DataValidation.AddDecimalDataValidation();

            // Assert
            Assert.AreEqual(1, _sheet.DataValidations.Count);
        }

        [TestMethod]
        public void RangeBase_AddDecimalValidation_AddressIsCorrect()
        {
            // Act
            _sheet.Cells["A1:A2"].DataValidation.AddDecimalDataValidation();

            // Assert
            Assert.AreEqual("A1:A2", _sheet.DataValidations[0].Address.Address);
        }

        [TestMethod]
        public void RangeBase_AddTextLengthValidation_ValidationIsAdded()
        {
            // Act
            _sheet.Cells["A1:A2"].DataValidation.AddTextLengthDataValidation();

            // Assert
            Assert.AreEqual(1, _sheet.DataValidations.Count);
        }

        [TestMethod]
        public void RangeBase_AddTextLengthValidation_AddressIsCorrect()
        {
            // Act
            _sheet.Cells["A1:A2"].DataValidation.AddTextLengthDataValidation();

            // Assert
            Assert.AreEqual("A1:A2", _sheet.DataValidations[0].Address.Address);
        }

        [TestMethod]
        public void RangeBase_AddDateTimeValidation_ValidationIsAdded()
        {
            // Act
            _sheet.Cells["A1:A2"].DataValidation.AddDateTimeDataValidation();

            // Assert
            Assert.AreEqual(1, _sheet.DataValidations.Count);
        }

        [TestMethod]
        public void RangeBase_AddDateTimeValidation_AddressIsCorrect()
        {
            // Act
            _sheet.Cells["A1:A2"].DataValidation.AddDateTimeDataValidation();

            // Assert
            Assert.AreEqual("A1:A2", _sheet.DataValidations[0].Address.Address);
        }

        [TestMethod]
        public void RangeBase_AddListValidation_ValidationIsAdded()
        {
            // Act
            _sheet.Cells["A1:A2"].DataValidation.AddListDataValidation();

            // Assert
            Assert.AreEqual(1, _sheet.DataValidations.Count);
        }

        [TestMethod]
        public void RangeBase_AddListValidation_AddressIsCorrect()
        {
            // Act
            _sheet.Cells["A1:A2"].DataValidation.AddListDataValidation();

            // Assert
            Assert.AreEqual("A1:A2", _sheet.DataValidations[0].Address.Address);
        }

        [TestMethod]
        public void RangeBase_AdTimeValidation_ValidationIsAdded()
        {
            // Act
            _sheet.Cells["A1:A2"].DataValidation.AddTimeDataValidation();

            // Assert
            Assert.AreEqual(1, _sheet.DataValidations.Count);
        }

        [TestMethod]
        public void RangeBase_AddTimeValidation_AddressIsCorrect()
        {
            // Act
            _sheet.Cells["A1:A2"].DataValidation.AddTimeDataValidation();

            // Assert
            Assert.AreEqual("A1:A2", _sheet.DataValidations[0].Address.Address);
        }
    }
}
