public virtual void test_metadata_fixed()
        {
            LocalDate              nodeDate = VAL_DATE.plusMonths(1);
            FraCurveNode           node     = FraCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD).withDate(CurveNodeDate.of(nodeDate));
            DatedParameterMetadata metadata = node.metadata(VAL_DATE, REF_DATA);

            assertEquals(metadata.Date, nodeDate);
            assertEquals(metadata.Label, node.Label);
        }
        public virtual void test_metadata_end()
        {
            FraCurveNode      node          = FraCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD);
            LocalDate         valuationDate = LocalDate.of(2015, 1, 22);
            LocalDate         endDate       = OFFSET.adjust(valuationDate, REF_DATA).plus(PERIOD_TO_START).plusMonths(3);
            ParameterMetadata metadata      = node.metadata(valuationDate, REF_DATA);

            assertEquals(((TenorDateParameterMetadata)metadata).Date, endDate);
            assertEquals(((TenorDateParameterMetadata)metadata).Tenor, TENOR_5M);
        }
        public virtual void test_metadata_last_fixing()
        {
            FraCurveNode           node          = FraCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD).withDate(CurveNodeDate.LAST_FIXING);
            LocalDate              valuationDate = LocalDate.of(2015, 1, 22);
            ImmutableMarketData    marketData    = ImmutableMarketData.builder(valuationDate).addValue(QUOTE_ID, 0.0d).build();
            FraTrade               trade         = node.trade(1d, marketData, REF_DATA);
            ResolvedFra            resolved      = trade.Product.resolve(REF_DATA);
            LocalDate              fixingDate    = ((IborRateComputation)(resolved.FloatingRate)).FixingDate;
            DatedParameterMetadata metadata      = node.metadata(valuationDate, REF_DATA);

            assertEquals(((TenorDateParameterMetadata)metadata).Date, fixingDate);
            assertEquals(((TenorDateParameterMetadata)metadata).Tenor, TENOR_5M);
        }