public void Parse_EqualsExpectedResult(DayTestItem <string> dayTestItem)
        {
            var dayFromText = Day.Parse(dayTestItem.ExpectedResult); // TODO bad use of Expected result?
            var expectedDay = dayTestItem.Create();

            Assert.AreEqual(expectedDay, dayFromText);
        }
        public void End_ShouldEqualDateTimeForStartOfNextDay(DayTestItem dayTestItem)
        {
            var day         = dayTestItem.Create();
            var expectedEnd = new DateTime(dayTestItem.YearNum, dayTestItem.MonthOfYear, dayTestItem.DayOfMonth).AddDays(1);

            Assert.AreEqual(expectedEnd, day.End);
        }
        public void ToString_EqualsExpectedResult(DayTestItem <string> dayTestItem)
        {
            var day       = dayTestItem.Create();
            var formatted = day.ToString();

            Assert.AreEqual(dayTestItem.ExpectedResult, formatted);
        }
        public void Start_ShouldEqualDateTimeForStartOfDay(DayTestItem dayTestItem)
        {
            var day           = dayTestItem.Create();
            var expectedStart = new DateTime(dayTestItem.YearNum, dayTestItem.MonthOfYear, dayTestItem.DayOfMonth);

            Assert.AreEqual(expectedStart, day.Start);
        }
        public void Deconstruct_ReturnsComponentsUsedToConstruct(DayTestItem testItem)
        {
            var day = testItem.Create();

            (int year, int monthOfYear, int dayOfMonth) = day;
            Assert.AreEqual(testItem.YearNum, year);
            Assert.AreEqual(testItem.MonthOfYear, monthOfYear);
            Assert.AreEqual(testItem.DayOfMonth, dayOfMonth);
        }
 public void Constructor_WithMonthParameterOutOfRange_ThrowsArgumentOutOfRangeException(DayTestItem dayTestItem)
 {
     // ReSharper disable once ObjectCreationAsStatement
     Assert.Throws <ArgumentOutOfRangeException>(() => dayTestItem.Create());
 }
        public void DayOfYearProperty_EqualsDayUsedToConstruct(DayTestItem dayTestItem)
        {
            var day = dayTestItem.Create();

            Assert.AreEqual(dayTestItem.DayOfMonth, day.DayOfMonth);
        }
        public void MonthOfYearProperty_EqualsMonthOfYearUsedToConstruct(DayTestItem dayTestItem)
        {
            var day = dayTestItem.Create();

            Assert.AreEqual(dayTestItem.MonthOfYear, day.MonthOfYear);
        }
        public void YearProperty_EqualsYearUsedToConstruct(DayTestItem dayTestItem)
        {
            var day = dayTestItem.Create();

            Assert.AreEqual(dayTestItem.YearNum, day.Year);
        }