private static GenericMonth TweakBy( this GenericMonth genericMonth, int amount, GenericMonthComponent componentToTweak) { if (componentToTweak == GenericMonthComponent.Month) { var referenceMonth = new DateTime(genericMonth.Year, (int)genericMonth.MonthNumber, 1); var updatedMonth = referenceMonth.AddMonths(amount); var result = new GenericMonth(updatedMonth.Year, (MonthNumber)updatedMonth.Month); return(result); } if (componentToTweak == GenericMonthComponent.Year) { var result = new GenericMonth(genericMonth.Year + amount, genericMonth.MonthNumber); return(result); } throw new NotSupportedException("this generic month component is not supported: " + componentToTweak); }
private static GenericMonth TweakComponentOfGenericMonth(this GenericMonth genericMonth, GenericMonthComponent componentToTweak) { if (componentToTweak == GenericMonthComponent.Month) { var tweakedMonth = A.Dummy <MonthNumber>().ThatIsNot(genericMonth.MonthNumber); var result = new GenericMonth(genericMonth.Year, tweakedMonth); return(result); } if (componentToTweak == GenericMonthComponent.Year) { var tweakedYear = A.Dummy <PositiveInteger>().ThatIs(y => y != genericMonth.Year && y <= 9999); var result = new GenericMonth(tweakedYear, genericMonth.MonthNumber); return(result); } throw new NotSupportedException("this generic month component is not supported: " + componentToTweak); }