//-------------------------------------------------------------------------
        public virtual void test_of()
        {
            DiscountFxForwardRates test = DiscountFxForwardRates.of(CURRENCY_PAIR, FX_RATE, DFCURVE_GBP, DFCURVE_USD);

            assertEquals(test.CurrencyPair, CURRENCY_PAIR);
            assertEquals(test.ValuationDate, DATE_VAL);
            assertEquals(test.BaseCurrencyDiscountFactors, DFCURVE_GBP);
            assertEquals(test.CounterCurrencyDiscountFactors, DFCURVE_USD);
            assertEquals(test.FxRateProvider, FX_RATE);
            assertEquals(test.findData(CURVE1.Name), CURVE1);
            assertEquals(test.findData(CURVE2.Name), CURVE2);
            assertEquals(test.findData(CurveName.of("Rubbish")), null);

            int baseSize = DFCURVE_USD.ParameterCount;

            assertEquals(test.ParameterCount, DFCURVE_GBP.ParameterCount + baseSize);
            assertEquals(test.getParameter(0), DFCURVE_GBP.getParameter(0));
            assertEquals(test.getParameter(baseSize), DFCURVE_USD.getParameter(0));
            assertEquals(test.getParameterMetadata(0), DFCURVE_GBP.getParameterMetadata(0));
            assertEquals(test.getParameterMetadata(baseSize), DFCURVE_USD.getParameterMetadata(0));
            assertEquals(test.withParameter(0, 1d).BaseCurrencyDiscountFactors, DFCURVE_GBP.withParameter(0, 1d));
            assertEquals(test.withParameter(0, 1d).CounterCurrencyDiscountFactors, DFCURVE_USD);
            assertEquals(test.withParameter(baseSize, 1d).BaseCurrencyDiscountFactors, DFCURVE_GBP);
            assertEquals(test.withParameter(baseSize, 1d).CounterCurrencyDiscountFactors, DFCURVE_USD.withParameter(0, 1d));
            assertEquals(test.withPerturbation((i, v, m) => v + 1d).BaseCurrencyDiscountFactors, DFCURVE_GBP.withPerturbation((i, v, m) => v + 1d));
            assertEquals(test.withPerturbation((i, v, m) => v + 1d).CounterCurrencyDiscountFactors, DFCURVE_USD.withPerturbation((i, v, m) => v + 1d));
        }
        //-------------------------------------------------------------------------
        public virtual void test_of_withoutFixings()
        {
            DiscountOvernightIndexRates test = DiscountOvernightIndexRates.of(GBP_SONIA, DFCURVE);

            assertEquals(test.Index, GBP_SONIA);
            assertEquals(test.ValuationDate, DATE_VAL);
            assertEquals(test.Fixings, SERIES_EMPTY);
            assertEquals(test.DiscountFactors, DFCURVE);
            assertEquals(test.ParameterCount, DFCURVE.ParameterCount);
            assertEquals(test.getParameter(0), DFCURVE.getParameter(0));
            assertEquals(test.getParameterMetadata(0), DFCURVE.getParameterMetadata(0));
            assertEquals(test.withParameter(0, 1d).DiscountFactors, DFCURVE.withParameter(0, 1d));
            assertEquals(test.withPerturbation((i, v, m) => v + 1d).DiscountFactors, DFCURVE.withPerturbation((i, v, m) => v + 1d));
            assertEquals(test.findData(CURVE.Name), CURVE);
            assertEquals(test.findData(CurveName.of("Rubbish")), null);
            // check IborIndexRates
            OvernightIndexRates test2 = OvernightIndexRates.of(GBP_SONIA, DATE_VAL, CURVE);

            assertEquals(test, test2);
        }