private static CalendarQuarter TweakBy( this CalendarQuarter calendarQuarter, int amount, CalendarQuarterComponent componentToTweak) { if (componentToTweak == CalendarQuarterComponent.Quarter) { var referenceMonth = new DateTime(calendarQuarter.Year, (int)calendarQuarter.QuarterNumber * 3, 1); var updatedMonth = referenceMonth.AddMonths(amount * 3); var result = new CalendarQuarter(updatedMonth.Year, (QuarterNumber)(updatedMonth.Month / 3)); return(result); } if (componentToTweak == CalendarQuarterComponent.Year) { var result = new CalendarQuarter(calendarQuarter.Year + amount, calendarQuarter.QuarterNumber); return(result); } throw new NotSupportedException("this calendar quarter component is not supported: " + componentToTweak); }
private static CalendarQuarter TweakComponentOfCalendarQuarter(this CalendarQuarter calendarQuarter, CalendarQuarterComponent componentToTweak) { if (componentToTweak == CalendarQuarterComponent.Quarter) { var tweakedQuarter = A.Dummy <QuarterNumber>().ThatIsNot(calendarQuarter.QuarterNumber); var result = new CalendarQuarter(calendarQuarter.Year, tweakedQuarter); return(result); } if (componentToTweak == CalendarQuarterComponent.Year) { var tweakedYear = A.Dummy <PositiveInteger>().ThatIs(y => y != calendarQuarter.Year && y <= 9999); var result = new CalendarQuarter(tweakedYear, calendarQuarter.QuarterNumber); return(result); } throw new NotSupportedException("this calendar quarter component is not supported: " + componentToTweak); }