Пример #1
0
        public void StubValuesForInterface()
        {
            var value = StubValue.ForType(typeof(IMyInterface));

            Assert.That(value, Is.InstanceOf <IProxy>());
            Assert.That(((IProxy)value).BaseObject, Is.TypeOf <Mock>());
        }
Пример #2
0
        public void StubValuesForDelegate()
        {
            var value = StubValue.ForType(typeof(Action));

            Assert.That(value, Is.InstanceOf <Delegate>());
            Assert.That(((Delegate)value).Target, Is.InstanceOf <IProxy>());
            Assert.That(((IProxy)((Delegate)value).Target).BaseObject, Is.TypeOf <Mock>());
        }
 public static bool StubValueHasFloatingRateArray(StubValue stubValue)
 {
     return(stubValue.Items[0] is FloatingRate);
 }
 public static FloatingRate[] GetStubValueFloatingRateArray(StubValue stubValue)
 {
     return(stubValue.Items.Cast <FloatingRate>().ToArray());
 }
 public static bool StubValueHasStubAmountArray(StubValue stubValue)
 {
     return(stubValue.Items[0] is Money);
 }
 public static Money[] GetStubValueStubAmountArray(StubValue stubValue)
 {
     return(stubValue.Items.Cast <Money>().ToArray());
 }
 public static bool StubValueHasStubRateArray(StubValue stubValue)
 {
     return(stubValue.Items[0] is decimal);
 }
 public static decimal[] GetStubValueStubRateArray(StubValue stubValue)
 {
     return(stubValue.Items.Select(item => (decimal)item).ToArray());
 }
Пример #9
0
        public static void UpdateStubCalculationPeriod(InterestRateStream interestRateStream, CalculationPeriod stubCalculationPeriod, StubValue stubValue)
        {
            if (XsdClassesFieldResolver.StubValueHasStubRateArray(stubValue))
            {
                Decimal fixedRate = XsdClassesFieldResolver.GetStubValueStubRateArray(stubValue)[0];

                // Fixed rate
                //
                XsdClassesFieldResolver.SetCalculationPeriodFixedRate(stubCalculationPeriod, fixedRate);
            }
            //else if (XsdClassesFieldResolver.StubValue_HasFloatingRateArray(stubValue))
            //{
            //    //Calculation calculation = XsdClassesFieldResolver.CalculationPeriodAmount_GetCalculation(interestRateStream.calculationPeriodAmount);

            //    //FloatingRate floatingRate = XsdClassesFieldResolver.GetStubValue_FloatingRateArray(stubValue)[0];

            //    //FloatingRateDefinition floatingRateDefinition = ForecastRateHelper.UpdateFloatingRateDefinition(floatingRate,
            //    //                                                                             calculation.dayCountFraction,
            //    //                                                                             stubCalculationPeriod);

            //    // no observed, no calculated rate, spread == 0.0
            //    //
            //    FloatingRateDefinition floatingRateDefinition = ForecastRateHelper.CreateFloatingRateDefinition(stubCalculationPeriod);
            //    XsdClassesFieldResolver.CalculationPeriod_SetFloatingRateDefinition(stubCalculationPeriod, floatingRateDefinition);


            //    //// Floating rate is set on UpdateCashflows phase.
            //    ////
            //    //XsdClassesFieldResolver.CalculationPeriod_SetFloatingRateDefinition(stubCalculationPeriod, floatingRateDefinition);
            //    //throw new NotImplementedException("");
            //}
            else if (XsdClassesFieldResolver.StubValueHasStubAmountArray(stubValue))
            {
                throw new NotImplementedException("stubCalculationPeriodAmount with stubAmount is not implemented.");
            }
        }
Пример #10
0
 public void StubValuesForStrings()
 {
     Assert.That(StubValue.ForType(typeof(string)), Is.EqualTo(string.Empty));
 }
Пример #11
0
 public void StubValuesForArrays()
 {
     Assert.That(StubValue.ForType(typeof(int[])), Is.Empty);
     Assert.That(StubValue.ForType(typeof(double[, ])), Is.Empty);
     Assert.That(StubValue.ForType(typeof(string[, , ])), Is.Empty);
 }
Пример #12
0
 public void StubValuesForReferenceTypesWithoutDefaultConstructors()
 {
     Assert.That(StubValue.ForType(typeof(Uri)), Is.Null);
 }
Пример #13
0
 public void StubValuesForReferenceTypesWithDefaultConstructors()
 {
     Assert.That(StubValue.ForType(typeof(List <int>)), Is.Not.Null.And.TypeOf <List <int> >());
 }
Пример #14
0
 public void StubValuesForValueTypes()
 {
     Assert.AreEqual(0, StubValue.ForType(typeof(int)));
     Assert.AreEqual(0.0, StubValue.ForType(typeof(double)));
     Assert.AreEqual(0m, StubValue.ForType(typeof(decimal)));
 }
        private static void UpdateStubCalculationPeriodData(InterestRateStream interestRateStream, CalculationPeriod stubCalculationPeriod, StubValue stubValue, Notional notinalSchedule)
        {
            StubCalculationPeriodAmountHelper.UpdateStubCalculationPeriod(interestRateStream, stubCalculationPeriod, stubValue);
            decimal notional = NotionalHelper.GetNotionalValue(notinalSchedule, stubCalculationPeriod.adjustedStartDate);

            // Notinal amount
            //
            XsdClassesFieldResolver.CalculationPeriodSetNotionalAmount(stubCalculationPeriod, notional);
        }
        /// <summary>
        /// Update calculation periods with rates/notional.
        /// </summary>
        /// <param name="interestRateStream"></param>
        /// <param name="calculationPeriodsPrincipalExchangesAndStubs"></param>
        public static void UpdateCalculationPeriodsData(InterestRateStream interestRateStream, CalculationPeriodsPrincipalExchangesAndStubs calculationPeriodsPrincipalExchangesAndStubs)
        {
            Calculation calculation      = XsdClassesFieldResolver.CalculationPeriodAmountGetCalculation(interestRateStream.calculationPeriodAmount);
            Notional    notionalSchedule = XsdClassesFieldResolver.CalculationGetNotionalSchedule(calculation);

            #region Generate FUTURE amounts for principle exchanges

            //  Initial PE
            //
            if (null != calculationPeriodsPrincipalExchangesAndStubs.InitialPrincipalExchange)
            {
                //  initial OUTflow
                //
                decimal initialNotionalValue = ScheduleHelper.GetValue(notionalSchedule.notionalStepSchedule, calculationPeriodsPrincipalExchangesAndStubs.InitialPrincipalExchange.adjustedPrincipalExchangeDate);
                calculationPeriodsPrincipalExchangesAndStubs.InitialPrincipalExchange.principalExchangeAmount          = -initialNotionalValue;
                calculationPeriodsPrincipalExchangesAndStubs.InitialPrincipalExchange.principalExchangeAmountSpecified = true;
            }
            //  intermediatory PE
            //
            foreach (PrincipalExchange intermediatoryExchange in calculationPeriodsPrincipalExchangesAndStubs.IntermediatePrincipalExchanges)
            {
                DateTime principleExchangeDate = intermediatoryExchange.adjustedPrincipalExchangeDate;
                //value at the day before principle exchange day
                //
                decimal prevNotionalValue = ScheduleHelper.GetValue(notionalSchedule.notionalStepSchedule, principleExchangeDate.AddDays(-1));
                //value at principle exchange day ..
                //
                decimal newNotionalValue        = ScheduleHelper.GetValue(notionalSchedule.notionalStepSchedule, principleExchangeDate);
                decimal principalExchangeAmount = prevNotionalValue - newNotionalValue;
                intermediatoryExchange.principalExchangeAmount          = principalExchangeAmount;
                intermediatoryExchange.principalExchangeAmountSpecified = true;
            }
            //  Final PE
            //
            if (null != calculationPeriodsPrincipalExchangesAndStubs.FinalPrincipalExchange)
            {
                // pay the rest ot the notional back
                //
                decimal newNotionalValue = ScheduleHelper.GetValue(notionalSchedule.notionalStepSchedule,
                                                                   calculationPeriodsPrincipalExchangesAndStubs.FinalPrincipalExchange.adjustedPrincipalExchangeDate);
                calculationPeriodsPrincipalExchangesAndStubs.FinalPrincipalExchange.principalExchangeAmount          = newNotionalValue;
                calculationPeriodsPrincipalExchangesAndStubs.FinalPrincipalExchange.principalExchangeAmountSpecified = true;
            }

            #endregion

            //  Process standard calculation periods
            //
            foreach (CalculationPeriod calculationPeriod in calculationPeriodsPrincipalExchangesAndStubs.CalculationPeriods)
            {
                UpdateCalculationPeriodData(calculation, calculationPeriod, notionalSchedule);
            }
            // Process stub calculation periods
            //
            if (null != interestRateStream.stubCalculationPeriodAmount)
            {
                if ((null == interestRateStream.stubCalculationPeriodAmount.initialStub) &&
                    (null == interestRateStream.stubCalculationPeriodAmount.finalStub))
                {
                    throw new System.Exception(
                              "interestRateStream.stubCalculationPeriodAmount.initialStub && interestRateStream.stubCalculationPeriodAmount.finalStub are null");
                }
                StubValue initialStub = interestRateStream.stubCalculationPeriodAmount.initialStub;
                StubValue finalStub   = interestRateStream.stubCalculationPeriodAmount.finalStub;
                if (null != calculationPeriodsPrincipalExchangesAndStubs.InitialStubCalculationPeriod && null != initialStub)
                {
                    UpdateStubCalculationPeriodData(interestRateStream, calculationPeriodsPrincipalExchangesAndStubs.InitialStubCalculationPeriod, initialStub, notionalSchedule);
                }
                if (null != calculationPeriodsPrincipalExchangesAndStubs.FinalStubCalculationPeriod && null != finalStub)
                {
                    UpdateStubCalculationPeriodData(interestRateStream, calculationPeriodsPrincipalExchangesAndStubs.FinalStubCalculationPeriod, finalStub, notionalSchedule);
                }
            }
            else
            {
                foreach (CalculationPeriod calculationPeriod in new[] { calculationPeriodsPrincipalExchangesAndStubs.InitialStubCalculationPeriod, calculationPeriodsPrincipalExchangesAndStubs.FinalStubCalculationPeriod })
                {
                    if (null != calculationPeriod)
                    {
                        UpdateCalculationPeriodData(calculation, calculationPeriod, notionalSchedule);
                    }
                }
            }
        }