private static CalendarDay TweakBy( this CalendarDay calendarDay, int amount, CalendarDayComponent componentToTweak) { if (componentToTweak == CalendarDayComponent.Day) { var updatedDateTime = calendarDay.ToDateTime().AddDays(amount); var result = new CalendarDay(updatedDateTime.Year, (MonthOfYear)updatedDateTime.Month, (DayOfMonth)updatedDateTime.Day); return(result); } if (componentToTweak == CalendarDayComponent.Month) { var updatedDateTime = calendarDay.ToDateTime().AddMonths(amount); var result = new CalendarDay(updatedDateTime.Year, (MonthOfYear)updatedDateTime.Month, (DayOfMonth)updatedDateTime.Day); return(result); } if (componentToTweak == CalendarDayComponent.Year) { var updatedDateTime = calendarDay.ToDateTime().AddYears(amount); var result = new CalendarDay(updatedDateTime.Year, (MonthOfYear)updatedDateTime.Month, (DayOfMonth)updatedDateTime.Day); return(result); } throw new NotSupportedException("this calendar day component is not supported: " + componentToTweak); }
public static void GetUnitsToDate___Should_return_all_days_from_january_1_to_lastUnitOfTimeInYear___When_lastUnitOfTimeInYear_is_of_type_CalendarDay() { // Arrange var lastUnitOfTimeInYear1 = new CalendarDay(2016, MonthOfYear.March, DayOfMonth.One); var lastUnitOfTimeInYear2 = new CalendarDay(2016, MonthOfYear.January, DayOfMonth.One); var expectedUnitsToDate1 = new List <CalendarDay>(); for (var date = new DateTime(2016, 1, 1); date <= lastUnitOfTimeInYear1.ToDateTime(); date = date.AddDays(1)) { expectedUnitsToDate1.Add(date.ToCalendarDay()); } var expectedUnitsToDate2 = new List <CalendarDay> { lastUnitOfTimeInYear2 }; // Act var actualUnitsToDate1 = lastUnitOfTimeInYear1.GetUnitsToDate(); var actualUnitsToDate2 = lastUnitOfTimeInYear2.GetUnitsToDate(); // Assert actualUnitsToDate1.Should().Equal(expectedUnitsToDate1); actualUnitsToDate2.Should().Equal(expectedUnitsToDate2); }
public static void ToDateTime___Should_return_DateTime_version_of_CalendarDay_with_DateTimeKind_Unspecified___When_called() { // Arrange var systemUnderTest1 = A.Dummy <CalendarDay>(); var systemUnderTest2 = new CalendarDay(2017, MonthOfYear.November, DayOfMonth.Thirty); var expectedDateTime1 = new DateTime(systemUnderTest1.Year, (int)systemUnderTest1.MonthOfYear, (int)systemUnderTest1.DayOfMonth); var expectedDateTime2 = new DateTime(2017, 11, 30); // Act var dateTime1 = systemUnderTest1.ToDateTime(); var dateTime2 = systemUnderTest2.ToDateTime(); // Assert dateTime1.AsTest().Must().BeEqualTo(expectedDateTime1); dateTime1.Kind.AsTest().Must().BeEqualTo(DateTimeKind.Unspecified); dateTime2.AsTest().Must().BeEqualTo(expectedDateTime2); dateTime2.Kind.AsTest().Must().BeEqualTo(DateTimeKind.Unspecified); }