示例#1
0
        private static FiscalQuarter TweakBy(
            this FiscalQuarter fiscalQuarter,
            int amount,
            FiscalQuarterComponent componentToTweak)
        {
            if (componentToTweak == FiscalQuarterComponent.Quarter)
            {
                var referenceMonth = new DateTime(fiscalQuarter.Year, (int)fiscalQuarter.QuarterNumber * 3, 1);

                var updatedMonth = referenceMonth.AddMonths(amount * 3);

                var result = new FiscalQuarter(updatedMonth.Year, (QuarterNumber)(updatedMonth.Month / 3));

                return(result);
            }

            if (componentToTweak == FiscalQuarterComponent.Year)
            {
                var result = new FiscalQuarter(fiscalQuarter.Year + amount, fiscalQuarter.QuarterNumber);

                return(result);
            }

            throw new NotSupportedException("this fiscal quarter component is not supported: " + componentToTweak);
        }
        private static FiscalQuarter TweakComponentOfFiscalQuarter(this FiscalQuarter fiscalQuarter, FiscalQuarterComponent componentToTweak)
        {
            if (componentToTweak == FiscalQuarterComponent.Quarter)
            {
                var tweakedQuarter = A.Dummy <QuarterNumber>().ThatIsNot(fiscalQuarter.QuarterNumber);
                var result         = new FiscalQuarter(fiscalQuarter.Year, tweakedQuarter);
                return(result);
            }

            if (componentToTweak == FiscalQuarterComponent.Year)
            {
                var tweakedYear = A.Dummy <PositiveInteger>().ThatIs(y => y != fiscalQuarter.Year && y <= 9999);
                var result      = new FiscalQuarter(tweakedYear, fiscalQuarter.QuarterNumber);
                return(result);
            }

            throw new NotSupportedException("this fiscal quarter component is not supported: " + componentToTweak);
        }