Ejemplo n.º 1
0
        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);
        }
        public static void GetUnitsToDate___Should_return_all_months_from_month_1_to_lastUnitOfTimeInYear___When_lastUnitOfTimeInYear_is_of_type_GenericMonth()
        {
            // Arrange
            var lastUnitOfTimeInYear1 = new GenericMonth(2016, MonthNumber.One);
            var lastUnitOfTimeInYear2 = new GenericMonth(2016, MonthNumber.Three);
            var lastUnitOfTimeInYear3 = new GenericMonth(2016, MonthNumber.Twelve);

            var expectedUnitsToDate1 = new List <GenericMonth> {
                lastUnitOfTimeInYear1
            };
            var expectedUnitsToDate2 = new List <GenericMonth> {
                new GenericMonth(2016, MonthNumber.One), new GenericMonth(2016, MonthNumber.Two), new GenericMonth(2016, MonthNumber.Three)
            };
            var expectedUnitsToDate3 = new List <GenericMonth> {
                new GenericMonth(2016, MonthNumber.One), new GenericMonth(2016, MonthNumber.Two), new GenericMonth(2016, MonthNumber.Three), new GenericMonth(2016, MonthNumber.Four), new GenericMonth(2016, MonthNumber.Five), new GenericMonth(2016, MonthNumber.Six), new GenericMonth(2016, MonthNumber.Seven), new GenericMonth(2016, MonthNumber.Eight), new GenericMonth(2016, MonthNumber.Nine), new GenericMonth(2016, MonthNumber.Ten), new GenericMonth(2016, MonthNumber.Eleven), new GenericMonth(2016, MonthNumber.Twelve)
            };

            // Act
            var actualUnitsToDate1 = lastUnitOfTimeInYear1.GetUnitsToDate();
            var actualUnitsToDate2 = lastUnitOfTimeInYear2.GetUnitsToDate();
            var actualUnitsToDate3 = lastUnitOfTimeInYear3.GetUnitsToDate();

            // Assert
            actualUnitsToDate1.Should().Equal(expectedUnitsToDate1);
            actualUnitsToDate2.Should().Equal(expectedUnitsToDate2);
            actualUnitsToDate3.Should().Equal(expectedUnitsToDate3);
        }
        public static void GetHashCode___Should_not_be_equal_for_two_UnitOfKind_objects___When_they_are_of_different_kinds_but_have_the_same_granularity_and_same_property_values()
        {
            // Arrange
            var calendarUnbounded = A.Dummy <CalendarUnbounded>();
            var fiscalUnbounded   = new FiscalUnbounded();
            var genericUnbounded  = new GenericUnbounded();

            var calendarYear = A.Dummy <CalendarYear>();
            var fiscalYear   = new FiscalYear(calendarYear.Year);
            var genericYear  = new GenericYear(calendarYear.Year);

            var calendarQuarter = A.Dummy <CalendarQuarter>();
            var fiscalQuarter   = new FiscalQuarter(calendarQuarter.Year, calendarQuarter.QuarterNumber);
            var genericQuarter  = new GenericQuarter(calendarQuarter.Year, calendarQuarter.QuarterNumber);

            var calendarMonth = A.Dummy <CalendarMonth>();
            var fiscalMonth   = new FiscalMonth(calendarMonth.Year, calendarMonth.MonthNumber);
            var genericMonth  = new GenericMonth(calendarMonth.Year, calendarMonth.MonthNumber);

            // Act
            var calendarUnboundedHashCode = calendarUnbounded.GetHashCode();
            var fiscalUnboundedHashCode   = fiscalUnbounded.GetHashCode();
            var genericUnboundedHashCode  = genericUnbounded.GetHashCode();

            var calendarYearHashCode = calendarYear.GetHashCode();
            var fiscalYearHashCode   = fiscalYear.GetHashCode();
            var genericYearHashCode  = genericYear.GetHashCode();

            var calendarQuarterHashCode = calendarQuarter.GetHashCode();
            var fiscalQuarterHashCode   = fiscalQuarter.GetHashCode();
            var genericQuarterHashCode  = genericQuarter.GetHashCode();

            var calendarMonthHashCode = calendarMonth.GetHashCode();
            var fiscalMonthHashCode   = fiscalMonth.GetHashCode();
            var genericMonthHashCode  = genericMonth.GetHashCode();

            // Assert
            calendarUnboundedHashCode.Should().NotBe(fiscalUnboundedHashCode);
            calendarUnboundedHashCode.Should().NotBe(genericUnboundedHashCode);
            fiscalUnboundedHashCode.Should().NotBe(genericUnboundedHashCode);

            calendarYearHashCode.Should().NotBe(fiscalYearHashCode);
            calendarYearHashCode.Should().NotBe(genericYearHashCode);
            fiscalYearHashCode.Should().NotBe(genericYearHashCode);

            calendarQuarterHashCode.Should().NotBe(fiscalQuarterHashCode);
            calendarQuarterHashCode.Should().NotBe(genericQuarterHashCode);
            fiscalQuarterHashCode.Should().NotBe(genericQuarterHashCode);

            calendarMonthHashCode.Should().NotBe(fiscalMonthHashCode);
            calendarMonthHashCode.Should().NotBe(genericMonthHashCode);
            fiscalMonthHashCode.Should().NotBe(genericMonthHashCode);
        }
        public static void LessThanOperator___Should_return_false___When_both_sides_of_operator_are_null()
        {
            // Arrange
            GenericMonth systemUnderTest1 = null;
            GenericMonth systemUnderTest2 = null;

            // Act
            var result = systemUnderTest1 < systemUnderTest2;

            // Assert
            result.Should().BeFalse();
        }
        public static void CompareTo___Should_return_1___When_calling_non_typed_overload_and_test_object_is_equal_to_other_object()
        {
            // Arrange
            var systemUnderTest1 = A.Dummy <GenericMonth>();
            var systemUnderTest2 = new GenericMonth(systemUnderTest1.Year, systemUnderTest1.MonthNumber);

            // Act
            var result = systemUnderTest1.CompareTo((object)systemUnderTest2);

            // Assert
            result.Should().Be(0);
        }
        public static void GreaterThanOrEqualToOperator___Should_return_true___When_left_side_of_operator_is_not_null_and_right_side_is_null()
        {
            // Arrange
            var          systemUnderTest1 = A.Dummy <GenericMonth>();
            GenericMonth systemUnderTest2 = null;

            // Act
            var result = systemUnderTest1 >= systemUnderTest2;

            // Assert
            result.Should().BeTrue();
        }
        public static void CompareTo___Should_throw_ArgumentException___When_calling_non_typed_overload_and_other_object_is_null()
        {
            // Arrange
            var          systemUnderTest1 = A.Dummy <GenericMonth>();
            GenericMonth systemUnderTest2 = null;

            // Act
            var ex = Record.Exception(() => systemUnderTest1.CompareTo((object)systemUnderTest2));

            // Assert
            ex.Should().BeOfType <ArgumentException>();
        }
        public static void GreaterThanOrEqualToOperator___Should_return_true___When_left_side_of_operator_is_equal_to_right_side()
        {
            // Arrange
            var systemUnderTest1 = A.Dummy <GenericMonth>();
            var systemUnderTest2 = new GenericMonth(systemUnderTest1.Year, systemUnderTest1.MonthNumber);

            // Act
            var result = systemUnderTest1 >= systemUnderTest2;

            // Assert
            result.Should().BeTrue();
        }
        public static void GreaterThanOperator___Should_return_false___When_left_side_of_operator_is_null_and_right_side_is_not_null()
        {
            // Arrange
            GenericMonth systemUnderTest1 = null;
            var          systemUnderTest2 = A.Dummy <GenericMonth>();

            // Act
            var result = systemUnderTest1 > systemUnderTest2;

            // Assert
            result.Should().BeFalse();
        }
        public static void GreaterThanOrEqualToOperator___Should_return_true___When_both_sides_of_operator_are_null()
        {
            // Arrange
            GenericMonth systemUnderTest1 = null;
            GenericMonth systemUnderTest2 = null;

            // Act
            var result = systemUnderTest1 >= systemUnderTest2;

            // Assert
            result.Should().BeTrue();
        }
        public static void Equals___Should_return_true___When_calling_non_typed_overload_and_objects_being_compared_have_same_property_values()
        {
            // Arrange
            var systemUnderTest1 = A.Dummy <GenericMonth>();
            var systemUnderTest2 = new GenericMonth(systemUnderTest1.Year, systemUnderTest1.MonthNumber);

            // Act
            var result = systemUnderTest1.Equals((object)systemUnderTest2);

            // Assert
            result.Should().BeTrue();
        }
        public static void NotEqualsOperator___Should_return_false___When_objects_being_compared_have_same_property_values()
        {
            // Arrange
            var systemUnderTest1 = A.Dummy <GenericMonth>();
            var systemUnderTest2 = new GenericMonth(systemUnderTest1.Year, systemUnderTest1.MonthNumber);

            // Act
            var result = systemUnderTest1 != systemUnderTest2;

            // Assert
            result.Should().BeFalse();
        }
        public static void GetHashCode___Should_be_equal_for_two_GenericMonths___When_both_objects_have_the_same_property_values()
        {
            // Arrange
            var systemUnderTest1 = A.Dummy <GenericMonth>();
            var systemUnderTest2 = new GenericMonth(systemUnderTest1.Year, systemUnderTest1.MonthNumber);

            // Act
            var hash1 = systemUnderTest1.GetHashCode();
            var hash2 = systemUnderTest2.GetHashCode();

            // Assert
            hash1.Should().Be(hash2);
        }
        public static void NotEqualsOperator___Should_return_true___When_one_side_of_operator_is_null_and_the_other_side_is_not_null()
        {
            // Arrange
            GenericMonth systemUnderTest1 = null;
            var          systemUnderTest2 = A.Dummy <GenericMonth>();

            // Act
            var result1 = systemUnderTest1 != systemUnderTest2;
            var result2 = systemUnderTest2 != systemUnderTest1;

            // Assert
            result1.Should().BeTrue();
            result2.Should().BeTrue();
        }
        public static void MonthNumber___Should_return_same_monthNumber_passed_to_constructor___When_getting()
        {
            // Arrange
            var validMonth = A.Dummy <GenericMonth>();

            var year        = validMonth.Year;
            var monthNumber = validMonth.MonthNumber;

            var systemUnderTest = new GenericMonth(year, monthNumber);

            // Act
            var actualMonthNumber = systemUnderTest.MonthNumber;

            // Assert
            actualMonthNumber.Should().Be(monthNumber);
        }
        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);
        }
        public static void ToString___Should_return_friendly_string_representation_of_object___When_called()
        {
            // Arrange
            var systemUnderTest1  = new GenericMonth(2017, MonthNumber.One);
            var systemUnderTest2  = new GenericMonth(2017, MonthNumber.Two);
            var systemUnderTest3  = new GenericMonth(2017, MonthNumber.Three);
            var systemUnderTest4  = new GenericMonth(2017, MonthNumber.Four);
            var systemUnderTest5  = new GenericMonth(2017, MonthNumber.Five);
            var systemUnderTest6  = new GenericMonth(2017, MonthNumber.Six);
            var systemUnderTest7  = new GenericMonth(2017, MonthNumber.Seven);
            var systemUnderTest8  = new GenericMonth(2017, MonthNumber.Eight);
            var systemUnderTest9  = new GenericMonth(2017, MonthNumber.Nine);
            var systemUnderTest10 = new GenericMonth(2017, MonthNumber.Ten);
            var systemUnderTest11 = new GenericMonth(2017, MonthNumber.Eleven);
            var systemUnderTest12 = new GenericMonth(2017, MonthNumber.Twelve);

            // Act
            var toString1  = systemUnderTest1.ToString();
            var toString2  = systemUnderTest2.ToString();
            var toString3  = systemUnderTest3.ToString();
            var toString4  = systemUnderTest4.ToString();
            var toString5  = systemUnderTest5.ToString();
            var toString6  = systemUnderTest6.ToString();
            var toString7  = systemUnderTest7.ToString();
            var toString8  = systemUnderTest8.ToString();
            var toString9  = systemUnderTest9.ToString();
            var toString10 = systemUnderTest10.ToString();
            var toString11 = systemUnderTest11.ToString();
            var toString12 = systemUnderTest12.ToString();

            // Assert
            toString1.Should().Be("1st month of 2017");
            toString2.Should().Be("2nd month of 2017");
            toString3.Should().Be("3rd month of 2017");
            toString4.Should().Be("4th month of 2017");
            toString5.Should().Be("5th month of 2017");
            toString6.Should().Be("6th month of 2017");
            toString7.Should().Be("7th month of 2017");
            toString8.Should().Be("8th month of 2017");
            toString9.Should().Be("9th month of 2017");
            toString10.Should().Be("10th month of 2017");
            toString11.Should().Be("11th month of 2017");
            toString12.Should().Be("12th month of 2017");
        }
Ejemplo n.º 18
0
        /// <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);
            });
        }
Ejemplo n.º 19
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GenericMonthReportingPeriod"/> class.
 /// </summary>
 /// <param name="start">The start of the reporting period.</param>
 /// <param name="end">The end of the reporting period.</param>
 public GenericMonthReportingPeriod(
     GenericMonth start,
     GenericMonth end)
     : base(start, end)
 {
 }
        public AccountingTimeDummyFactory()
        {
            AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(DayOfMonth.Invalid);
            AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(MonthNumber.Invalid);
            AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(MonthOfYear.Invalid);
            AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(QuarterNumber.Invalid);
            AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(UnitOfTimeKind.Invalid);
            AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(UnitOfTimeGranularity.Invalid);
            AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(ReportingPeriodComponent.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);
            });

            AddDummyCreatorForAbstractReportingPeriod <UnitOfTime>();
            AddDummyCreatorForAbstractReportingPeriod <CalendarUnitOfTime>();
            AddDummyCreatorForAbstractReportingPeriod <FiscalUnitOfTime>();
            AddDummyCreatorForAbstractReportingPeriod <GenericUnitOfTime>();
            AddDummyCreatorForConcreteReportingPeriod <CalendarDay>();
            AddDummyCreatorForConcreteReportingPeriod <CalendarQuarter>();
            AddDummyCreatorForConcreteReportingPeriod <CalendarMonth>();
            AddDummyCreatorForConcreteReportingPeriod <CalendarYear>();
            AddDummyCreatorForConcreteReportingPeriod <CalendarUnbounded>();
            AddDummyCreatorForConcreteReportingPeriod <FiscalMonth>();
            AddDummyCreatorForConcreteReportingPeriod <FiscalQuarter>();
            AddDummyCreatorForConcreteReportingPeriod <FiscalYear>();
            AddDummyCreatorForConcreteReportingPeriod <FiscalUnbounded>();
            AddDummyCreatorForConcreteReportingPeriod <GenericMonth>();
            AddDummyCreatorForConcreteReportingPeriod <GenericQuarter>();
            AddDummyCreatorForConcreteReportingPeriod <GenericYear>();
            AddDummyCreatorForConcreteReportingPeriod <GenericUnbounded>();
        }