public virtual void test_metadata_fixed()
        {
            LocalDate nodeDate                 = VAL_DATE.plusMonths(1);
            XCcyIborIborSwapCurveNode node     = XCcyIborIborSwapCurveNode.of(TEMPLATE, SPREAD_ID, SPREAD_ADJ, LABEL).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_last_fixing()
        {
            XCcyIborIborSwapCurveNode node  = XCcyIborIborSwapCurveNode.of(TEMPLATE, SPREAD_ID, SPREAD_ADJ, LABEL).withDate(CurveNodeDate.LAST_FIXING);
            LocalDate valuationDate         = LocalDate.of(2015, 1, 22);
            DatedParameterMetadata metadata = node.metadata(valuationDate, REF_DATA);
            LocalDate fixingExpected        = LocalDate.of(2024, 10, 24);

            assertEquals(metadata.Date, fixingExpected);
            assertEquals(((TenorDateParameterMetadata)metadata).Tenor, TENOR_10Y);
        }
        public virtual void test_metadata_end()
        {
            XCcyIborIborSwapCurveNode node  = XCcyIborIborSwapCurveNode.of(TEMPLATE, SPREAD_ID, SPREAD_ADJ);
            LocalDate         valuationDate = LocalDate.of(2015, 1, 22);
            ParameterMetadata metadata      = node.metadata(valuationDate, REF_DATA);

            // 2015-01-22 is Thursday, start is 2015-01-26, but 2025-01-26 is Sunday, so end is 2025-01-27
            assertEquals(((TenorDateParameterMetadata)metadata).Date, LocalDate.of(2025, 1, 27));
            assertEquals(((TenorDateParameterMetadata)metadata).Tenor, Tenor.TENOR_10Y);
        }