using Microsoft.VisualStudio.TestTools.UnitTesting; using PKHeX.Core; namespace PKHeX.Tests.Util { [TestClass] public class DateUtilTests { const string DateUtilCategory = "Date Util Tests"; [TestMethod] [TestCategory(DateUtilCategory)] public void RecognizesCorrectDates() { Assert.IsTrue(Core.Util.IsDateValid(2000, 1, 1), "Failed to recognize 1/1/2000"); Assert.IsTrue(Core.Util.IsDateValid(2001, 1, 31), "Failed to recognize 1/31/2001"); } [TestMethod] [TestCategory(DateUtilCategory)] public void MonthBoundaries() { Assert.IsTrue(Core.Util.IsDateValid(2016, 1, 31), "Incorrect month boundary for January"); Assert.IsTrue(Core.Util.IsDateValid(2016, 2, 28), "Incorrect month boundary for February"); Assert.IsTrue(Core.Util.IsDateValid(2016, 3, 31), "Incorrect month boundary for March"); Assert.IsTrue(Core.Util.IsDateValid(2016, 4, 30), "Incorrect month boundary for April"); Assert.IsTrue(Core.Util.IsDateValid(2016, 5, 31), "Incorrect month boundary for May"); Assert.IsTrue(Core.Util.IsDateValid(2016, 6, 30), "Incorrect month boundary for June"); Assert.IsTrue(Core.Util.IsDateValid(2016, 7, 31), "Incorrect month boundary for July"); Assert.IsTrue(Core.Util.IsDateValid(2016, 8, 31), "Incorrect month boundary for August"); Assert.IsTrue(Core.Util.IsDateValid(2016, 9, 30), "Incorrect month boundary for September"); Assert.IsTrue(Core.Util.IsDateValid(2016, 10, 31), "Incorrect month boundary for October"); Assert.IsTrue(Core.Util.IsDateValid(2016, 11, 30), "Incorrect month boundary for November"); Assert.IsTrue(Core.Util.IsDateValid(2016, 12, 31), "Incorrect month boundary for December"); } [TestMethod] [TestCategory(DateUtilCategory)] public void RecognizeCorrectLeapYear() { Assert.IsTrue(Core.Util.IsDateValid(2004, 2, 29)); } [TestMethod] [TestCategory(DateUtilCategory)] public void FailsWithIncorrectLeapYear() { Assert.IsFalse(Core.Util.IsDateValid(2005, 2, 29)); } [TestMethod] [TestCategory(DateUtilCategory)] public void FailsWithZeroDate() { Assert.IsFalse(Core.Util.IsDateValid(0, 0, 0)); } [TestMethod] [TestCategory(DateUtilCategory)] public void FailsWithNegativeDate() { Assert.IsFalse(Core.Util.IsDateValid(-1, -1, -1)); } [TestMethod] [TestCategory(DateUtilCategory)] public void FailsWithBigDay() { Assert.IsFalse(Core.Util.IsDateValid(2000, 1, 32)); } [TestMethod] [TestCategory(DateUtilCategory)] public void FailsWithBigMonth() { Assert.IsFalse(Core.Util.IsDateValid(2000, 13, 1)); } [TestMethod] [TestCategory(DateUtilCategory)] public void FailsWithBigYear() { Assert.IsFalse(Core.Util.IsDateValid(10000, 1, 1)); } [TestMethod] [TestCategory(DateUtilCategory)] public void FailsWithZeroDay() { Assert.IsFalse(Core.Util.IsDateValid(2000, 1, 0)); } [TestMethod] [TestCategory(DateUtilCategory)] public void FailsWithZeroMonth() { Assert.IsFalse(Core.Util.IsDateValid(2000, 0, 1)); } [TestMethod] [TestCategory(DateUtilCategory)] public void FailsWithZeroYear() { Assert.IsFalse(Core.Util.IsDateValid(0, 1, 1)); } [TestMethod] [TestCategory(DateUtilCategory)] public void TestUIntOverload() { Assert.IsTrue(Core.Util.IsDateValid((uint)2000, (uint)1, (uint)1), "Failed 1/1/2000"); Assert.IsFalse(Core.Util.IsDateValid(uint.MaxValue, uint.MaxValue, uint.MaxValue), "Failed with uint.MaxValue"); } } }