//-------------------------------------------------------------------------
        public virtual void test_discountFactor()
        {
            ZeroRateDiscountFactors test = ZeroRateDiscountFactors.of(GBP, DATE_VAL, CURVE);
            double relativeYearFraction  = ACT_365F.relativeYearFraction(DATE_VAL, DATE_AFTER);
            double expected = Math.Exp(-relativeYearFraction * CURVE.yValue(relativeYearFraction));

            assertEquals(test.discountFactor(DATE_AFTER), expected);
        }
        //-------------------------------------------------------------------------
        public virtual void test_zeroRate()
        {
            ZeroRateDiscountFactors test = ZeroRateDiscountFactors.of(GBP, DATE_VAL, CURVE);
            double relativeYearFraction  = ACT_365F.relativeYearFraction(DATE_VAL, DATE_AFTER);
            double discountFactor        = test.discountFactor(DATE_AFTER);
            double zeroRate = test.zeroRate(DATE_AFTER);

            assertEquals(Math.Exp(-zeroRate * relativeYearFraction), discountFactor);
        }
        public virtual void test_discountFactorWithSpread_periodic()
        {
            int periodPerYear            = 4;
            ZeroRateDiscountFactors test = ZeroRateDiscountFactors.of(GBP, DATE_VAL, CURVE);
            double relativeYearFraction  = ACT_365F.relativeYearFraction(DATE_VAL, DATE_AFTER);
            double discountFactorBase    = test.discountFactor(DATE_AFTER);
            double rate     = (Math.Pow(discountFactorBase, -1d / periodPerYear / relativeYearFraction) - 1d) * periodPerYear;
            double expected = discountFactorFromPeriodicallyCompoundedRate(rate + SPREAD, periodPerYear, relativeYearFraction);

            assertEquals(test.discountFactorWithSpread(DATE_AFTER, SPREAD, PERIODIC, periodPerYear), expected, TOL);
        }