static RelativeCutoffTest() { ConstructorArgumentValidationTestScenarios .AddScenario(() => new ConstructorArgumentValidationTestScenario <RelativeCutoff> { Name = "constructor should throw ArgumentOutOfRangeException when parameter 'startOrEnd' is neither ReportingPeriodComponent.Start nor ReportingPeriodComponent.End", ConstructionFunc = () => { var referenceObject = A.Dummy <RelativeCutoff>(); var result = new RelativeCutoff( referenceObject.Duration, A.Dummy <ReportingPeriodComponent>().ThatIsNotIn(new[] { ReportingPeriodComponent.Start, ReportingPeriodComponent.End })); return(result); }, ExpectedExceptionType = typeof(ArgumentOutOfRangeException), ExpectedExceptionMessageContains = new[] { "startOrEnd is neither ReportingPeriodComponent.Start nor ReportingPeriodComponent.End", }, }); }
/// <summary> /// Initializes a new instance of the <see cref="AccountingTimeDummyFactory"/> class. /// </summary> public AccountingTimeDummyFactory() { // ------------------------------------------------------------------------------------ // --------------------------- accounting period system ------------------------------ // ------------------------------------------------------------------------------------ AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(FiftyTwoFiftyThreeWeekMethodology.Unknown); AutoFixtureBackedDummyFactory.UseRandomConcreteSubclassForDummy <AccountingPeriodSystem>(); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var result = new FiscalYearAccountingPeriodSystem(A.Dummy <MonthOfYear>().ThatIsNot(MonthOfYear.December)); return(result); }); // ------------------------------------------------------------------------------------ // ------------------------------------- time ---------------------------------------- // ------------------------------------------------------------------------------------ AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(DayOfMonth.Invalid); AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(MonthNumber.Invalid); AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(MonthOfYear.Invalid); AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(QuarterNumber.Invalid); AutoFixtureBackedDummyFactory.UseRandomConcreteSubclassForDummy <UnitOfTime>(); AutoFixtureBackedDummyFactory.UseRandomConcreteSubclassForDummy <CalendarUnitOfTime>(); AutoFixtureBackedDummyFactory.UseRandomConcreteSubclassForDummy <FiscalUnitOfTime>(); AutoFixtureBackedDummyFactory.UseRandomConcreteSubclassForDummy <GenericUnitOfTime>(); AutoFixtureBackedDummyFactory.UseRandomInterfaceImplementationForDummy <IHaveAMonth>(); AutoFixtureBackedDummyFactory.UseRandomInterfaceImplementationForDummy <IHaveAQuarter>(); AutoFixtureBackedDummyFactory.UseRandomInterfaceImplementationForDummy <IHaveAYear>(); AutoFixtureBackedDummyFactory.UseRandomInterfaceImplementationForDummy <IAmBoundedTime>(); AutoFixtureBackedDummyFactory.UseRandomInterfaceImplementationForDummy <IAmUnboundedTime>(); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var year = ThreadSafeRandom.Next(MinYear, MaxYear + 1); var result = new GenericMonth(year, A.Dummy <MonthNumber>()); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var year = ThreadSafeRandom.Next(MinYear, MaxYear + 1); var result = new GenericQuarter(year, A.Dummy <QuarterNumber>()); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var year = ThreadSafeRandom.Next(MinYear, MaxYear + 1); var result = new GenericYear(year); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var year = ThreadSafeRandom.Next(MinYear, MaxYear + 1); var result = new FiscalMonth(year, A.Dummy <MonthNumber>()); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var year = ThreadSafeRandom.Next(MinYear, MaxYear + 1); var result = new FiscalQuarter(year, A.Dummy <QuarterNumber>()); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var year = ThreadSafeRandom.Next(MinYear, MaxYear + 1); var result = new FiscalYear(year); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { while (true) { try { var date = A.Dummy <DateTime>(); var year = ThreadSafeRandom.Next(MinYear, MaxYear + 1); var result = new CalendarDay(year, (MonthOfYear)date.Month, (DayOfMonth)date.Day); return(result); } catch (ArgumentException) { } } }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var year = ThreadSafeRandom.Next(MinYear, MaxYear + 1); var result = new CalendarMonth(year, A.Dummy <MonthOfYear>()); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var year = ThreadSafeRandom.Next(MinYear, MaxYear + 1); var result = new CalendarQuarter(year, A.Dummy <QuarterNumber>()); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var year = ThreadSafeRandom.Next(MinYear, MaxYear + 1); var result = new CalendarYear(year); return(result); }); // ------------------------------------------------------------------------------------ // ------------------------------ reporting period ----------------------------------- // ------------------------------------------------------------------------------------ AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(ReportingPeriodComponent.Invalid); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var potentialTypes = new[] { typeof(GenericReportingPeriod), typeof(FiscalReportingPeriod), typeof(CalendarReportingPeriod) }; var result = GetRandomReportingPeriodWrapper(potentialTypes).ReportingPeriod; return(result); }); // ------------------------------------------------------------------------------------ // ------------------------------------- unit ---------------------------------------- // ------------------------------------------------------------------------------------ AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(UnitOfTimeKind.Invalid); AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(UnitOfTimeGranularity.Invalid); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var unitOfTime = A.Dummy <UnitOfTime>().ThatIs(_ => !(_ is IAmUnboundedTime)); var result = new Unit(unitOfTime.UnitOfTimeKind, unitOfTime.UnitOfTimeGranularity); return(result); }); // ------------------------------------------------------------------------------------ // -------------------------- reporting period wrappers ------------------------------ // ------------------------------------------------------------------------------------ AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var start = A.Dummy <GenericMonth>(); var end = A.Dummy <GenericMonth>(); var result = end >= start ? new GenericMonthReportingPeriod(start, end) : new GenericMonthReportingPeriod(end, start); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var start = A.Dummy <GenericQuarter>(); var end = A.Dummy <GenericQuarter>(); var result = end >= start ? new GenericQuarterReportingPeriod(start, end) : new GenericQuarterReportingPeriod(end, start); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var start = A.Dummy <GenericYear>(); var end = A.Dummy <GenericYear>(); var result = end >= start ? new GenericYearReportingPeriod(start, end) : new GenericYearReportingPeriod(end, start); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var start = A.Dummy <FiscalMonth>(); var end = A.Dummy <FiscalMonth>(); var result = end >= start ? new FiscalMonthReportingPeriod(start, end) : new FiscalMonthReportingPeriod(end, start); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var start = A.Dummy <FiscalQuarter>(); var end = A.Dummy <FiscalQuarter>(); var result = end >= start ? new FiscalQuarterReportingPeriod(start, end) : new FiscalQuarterReportingPeriod(end, start); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var start = A.Dummy <FiscalYear>(); var end = A.Dummy <FiscalYear>(); var result = end >= start ? new FiscalYearReportingPeriod(start, end) : new FiscalYearReportingPeriod(end, start); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var start = A.Dummy <CalendarDay>(); var end = A.Dummy <CalendarDay>(); var result = end >= start ? new CalendarDayReportingPeriod(start, end) : new CalendarDayReportingPeriod(end, start); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var start = A.Dummy <CalendarMonth>(); var end = A.Dummy <CalendarMonth>(); var result = end >= start ? new CalendarMonthReportingPeriod(start, end) : new CalendarMonthReportingPeriod(end, start); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var start = A.Dummy <CalendarQuarter>(); var end = A.Dummy <CalendarQuarter>(); var result = end >= start ? new CalendarQuarterReportingPeriod(start, end) : new CalendarQuarterReportingPeriod(end, start); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var start = A.Dummy <CalendarYear>(); var end = A.Dummy <CalendarYear>(); var result = end >= start ? new CalendarYearReportingPeriod(start, end) : new CalendarYearReportingPeriod(end, start); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var potentialTypes = new[] { typeof(BoundedGenericReportingPeriod), typeof(BoundedFiscalReportingPeriod), typeof(BoundedCalendarReportingPeriod) }; var reportingPeriod = GetRandomReportingPeriodWrapper(potentialTypes).ReportingPeriod; var result = new BoundedReportingPeriod(reportingPeriod.Start, reportingPeriod.End); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var potentialTypes = new[] { typeof(GenericMonthReportingPeriod), typeof(GenericQuarterReportingPeriod), typeof(GenericYearReportingPeriod) }; var reportingPeriod = GetRandomReportingPeriodWrapper(potentialTypes).ReportingPeriod; var result = new BoundedGenericReportingPeriod((GenericUnitOfTime)reportingPeriod.Start, (GenericUnitOfTime)reportingPeriod.End); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var potentialTypes = new[] { typeof(FiscalMonthReportingPeriod), typeof(FiscalQuarterReportingPeriod), typeof(FiscalYearReportingPeriod) }; var reportingPeriod = GetRandomReportingPeriodWrapper(potentialTypes).ReportingPeriod; var result = new BoundedFiscalReportingPeriod((FiscalUnitOfTime)reportingPeriod.Start, (FiscalUnitOfTime)reportingPeriod.End); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var potentialTypes = new[] { typeof(CalendarDayReportingPeriod), typeof(CalendarMonthReportingPeriod), typeof(CalendarQuarterReportingPeriod), typeof(CalendarYearReportingPeriod) }; var reportingPeriod = GetRandomReportingPeriodWrapper(potentialTypes).ReportingPeriod; var result = new BoundedCalendarReportingPeriod((CalendarUnitOfTime)reportingPeriod.Start, (CalendarUnitOfTime)reportingPeriod.End); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var boundedReportingPeriod = A.Dummy <BoundedGenericReportingPeriod>().ReportingPeriod; var result = ThreadSafeRandom.Next(0, 2) == 0 ? new SemiBoundedGenericReportingPeriod((GenericUnitOfTime)boundedReportingPeriod.Start, new GenericUnbounded()) : new SemiBoundedGenericReportingPeriod(new GenericUnbounded(), (GenericUnitOfTime)boundedReportingPeriod.End); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var boundedReportingPeriod = A.Dummy <BoundedFiscalReportingPeriod>().ReportingPeriod; var result = ThreadSafeRandom.Next(0, 2) == 0 ? new SemiBoundedFiscalReportingPeriod((FiscalUnitOfTime)boundedReportingPeriod.Start, new FiscalUnbounded()) : new SemiBoundedFiscalReportingPeriod(new FiscalUnbounded(), (FiscalUnitOfTime)boundedReportingPeriod.End); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var boundedReportingPeriod = A.Dummy <BoundedCalendarReportingPeriod>().ReportingPeriod; var result = ThreadSafeRandom.Next(0, 2) == 0 ? new SemiBoundedCalendarReportingPeriod((CalendarUnitOfTime)boundedReportingPeriod.Start, new CalendarUnbounded()) : new SemiBoundedCalendarReportingPeriod(new CalendarUnbounded(), (CalendarUnitOfTime)boundedReportingPeriod.End); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var potentialTypes = new[] { typeof(GenericUnboundedReportingPeriod), typeof(SemiBoundedGenericReportingPeriod), typeof(BoundedGenericReportingPeriod) }; var reportingPeriod = GetRandomReportingPeriodWrapper(potentialTypes).ReportingPeriod; var result = new GenericReportingPeriod((GenericUnitOfTime)reportingPeriod.Start, (GenericUnitOfTime)reportingPeriod.End); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var potentialTypes = new[] { typeof(FiscalUnboundedReportingPeriod), typeof(SemiBoundedFiscalReportingPeriod), typeof(BoundedFiscalReportingPeriod) }; var reportingPeriod = GetRandomReportingPeriodWrapper(potentialTypes).ReportingPeriod; var result = new FiscalReportingPeriod((FiscalUnitOfTime)reportingPeriod.Start, (FiscalUnitOfTime)reportingPeriod.End); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var potentialTypes = new[] { typeof(CalendarUnboundedReportingPeriod), typeof(SemiBoundedCalendarReportingPeriod), typeof(BoundedCalendarReportingPeriod) }; var reportingPeriod = GetRandomReportingPeriodWrapper(potentialTypes).ReportingPeriod; var result = new CalendarReportingPeriod((CalendarUnitOfTime)reportingPeriod.Start, (CalendarUnitOfTime)reportingPeriod.End); return(result); }); // ------------------------------------------------------------------------------------ // ------------------------------------ cutoff --------------------------------------- // ------------------------------------------------------------------------------------ AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var result = new RelativeCutoff(A.Dummy <Duration>(), A.Dummy <ReportingPeriodComponent>().ThatIsIn(new[] { ReportingPeriodComponent.Start, ReportingPeriodComponent.End })); return(result); }); // ------------------------------------------------------------------------------------ // ---------------------------------- timeseries ------------------------------------- // ------------------------------------------------------------------------------------ AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var result = (IDatapoint)A.Dummy <Datapoint <Version> >(); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var result = (ITimeseries)A.Dummy <Timeseries <Version> >(); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var result = GetDummyTimeseries <Version>(); return(result); }); }