//-------------------------------------------------------------------------
        public virtual void test_of()
        {
            SyntheticRatesCurveCalibrator test = SyntheticRatesCurveCalibrator.of(CALIBRATOR, MQ_MEASURES);

            assertEquals(test.Measures, MQ_MEASURES);
            assertEquals(test.Calibrator, CALIBRATOR);
            assertEquals(test.ToString(), "SyntheticCurveCalibrator[CurveCalibrator[ParSpread], MarketQuote]");
        }
        // Check synthetic calibration in the case of existing time-series with fixing on the valuation date
        public virtual void calibrate_ts_vd()
        {
            SyntheticRatesCurveCalibrator calibratorDefault = SyntheticRatesCurveCalibrator.standard();
            MarketData    mad           = calibratorDefault.marketData(GROUPS_SYN_EUR, MULTICURVE_INPUT_EUR_TSLARGE, REF_DATA);
            RatesProvider multicurveSyn = CALIBRATOR_SYNTHETIC.calibrate(GROUPS_SYN_EUR, MULTICURVE_INPUT_EUR_TSLARGE, REF_DATA);

            foreach (CurveDefinition entry in GROUPS_SYN_EUR.CurveDefinitions)
            {
                ImmutableList <CurveNode> nodes = entry.Nodes;
                foreach (CurveNode node in nodes)
                {
                    ResolvedTrade trade = node.resolvedTrade(1d, mad, REF_DATA);
                    double        mqIn  = MQ_MEASURES.value(trade, MULTICURVE_INPUT_EUR_TSLARGE);
                    double        mqSy  = MQ_MEASURES.value(trade, multicurveSyn);
                    assertEquals(mqIn, mqSy, TOLERANCE_MQ);
                }
            }
        }