private void VerificationHelper(DateTime value, int addValue)
{
System.Globalization.Calendar tc = new TaiwanCalendar();
DateTime newDate = tc.AddMonths(value, addValue);
int totalYear = addValue / 12;
int leftMonth = addValue % 12;
int day = value.Day;
int month = value.Month + leftMonth;
int year = value.Year + totalYear;
if (month > 12)
{
month = month % 12;
year++;
}
if (month < 1)
{
year--;
month = 12 + month;
}
int dayInMonth = 0;
if (IsLeapYear(year))
{
dayInMonth = _DAYS_PER_MONTHS_IN_LEAP_YEAR[month];
}
else
{
dayInMonth = _DAYS_PER_MONTHS_IN_NO_LEAP_YEAR[month];
}
day = day > dayInMonth ? dayInMonth : day;
DateTime desiredDate = new DateTime(year, month, day, value.Hour, value.Minute, value.Second, value.Millisecond);
Assert.Equal(desiredDate.Year, newDate.Year);
Assert.Equal(desiredDate.Month, newDate.Month);
Assert.Equal(desiredDate.Day, newDate.Day);
Assert.Equal(desiredDate.Hour, newDate.Hour);
Assert.Equal(desiredDate.Minute, newDate.Minute);
Assert.Equal(desiredDate.Second, newDate.Second);
Assert.Equal(desiredDate.Millisecond, newDate.Millisecond);
}