using System; using FluentAssertions; using PKHeX.Core; using Xunit; namespace PKHeX.Tests.PKM { public class MetDateTests { [Fact] public void MetDateNullWhenDateComponentsAreAllZero() { var pk = new PK7 { Met_Day = 0, Met_Month = 0, Met_Year = 0, }; pk.MetDate.HasValue.Should().BeFalse(); } [Fact] public void MetDateReturnsCorrectDate() { var pk = new PK7 { Met_Day = 10, Met_Month = 8, Met_Year = 16, }; pk.MetDate.GetValueOrDefault().Should().Be(new DateTime(2016, 8, 10).Date); } [Fact] public void MetDateCalculatesYear0Correctly() { var pk = new PK7 { Met_Day = 1, Met_Month = 1, Met_Year = 0, }; pk.MetDate.GetValueOrDefault().Date.Year.Should().Be(2000); } [Fact] public void SettingToNullZerosComponents() { var pk = new PK7 { Met_Day = 12, Met_Month = 12, Met_Year = 12, }; pk.Met_Day.Should().Be(12); pk.Met_Month.Should().Be(12); pk.Met_Year.Should().Be(12); pk.MetDate = null; pk.Met_Day.Should().Be(0); pk.Met_Month.Should().Be(0); pk.Met_Year.Should().Be(0); } [Fact] public void SettingMetDateSetsComponents() { var pk = new PK7 { Met_Day = 12, Met_Month = 12, Met_Year = 12, }; pk.Met_Day.Should().Be(12); pk.Met_Month.Should().Be(12); pk.Met_Year.Should().Be(12); pk.MetDate = new DateTime(2005, 5, 5); pk.Met_Day.Should().Be(5); pk.Met_Month.Should().Be(5); pk.Met_Year.Should().Be(5); } } public class EggMetDateTests { [Fact] public void EggMetDateNullWhenDateComponentsAreAllZero() { var pk = new PK7 { Egg_Day = 0, Egg_Month = 0, Egg_Year = 0, }; pk.EggMetDate.HasValue.Should().BeFalse(); } [Fact] public void EggMetDateReturnsCorrectDate() { var pk = new PK7 { Egg_Day = 10, Egg_Month = 8, Egg_Year = 16, }; pk.EggMetDate.GetValueOrDefault().Should().Be(new DateTime(2016, 8, 10).Date); } [Fact] public void EggMetDateCalculatesYear0Correctly() { var pk = new PK7 { Egg_Day = 1, Egg_Month = 1, Egg_Year = 0, }; pk.EggMetDate.GetValueOrDefault().Date.Year.Should().Be(2000); } [Fact] public void SettingEggMetDateToNullZerosComponents() { var pk = new PK7 { Egg_Day = 12, Egg_Month = 12, Egg_Year = 12, }; pk.Egg_Day.Should().Be(12); pk.Egg_Month.Should().Be(12); pk.Egg_Year.Should().Be(12); pk.EggMetDate = null; pk.Egg_Day.Should().Be(0); pk.Egg_Month.Should().Be(0); pk.Egg_Year.Should().Be(0); } [Fact] public void SettingEggMetDateSetsComponents() { var pk = new PK7 { Egg_Day = 12, Egg_Month = 12, Egg_Year = 12, }; pk.Egg_Day.Should().Be(12); pk.Egg_Month.Should().Be(12); pk.Egg_Year.Should().Be(12); pk.EggMetDate = new DateTime(2005, 5, 5); pk.Egg_Day.Should().Be(5); pk.Egg_Month.Should().Be(5); pk.Egg_Year.Should().Be(5); } } }