//-------------------------------------------------------------------------
        public virtual void test_createProduct()
        {
            CapitalIndexedBondSecurity test = sut();

            assertEquals(test.createProduct(ReferenceData.empty()), PRODUCT);
            TradeInfo tradeInfo = TradeInfo.builder().tradeDate(date(2016, 6, 30)).settlementDate(date(2016, 7, 1)).build();
            CapitalIndexedBondTrade expectedTrade = CapitalIndexedBondTrade.builder().info(tradeInfo).product(PRODUCT).quantity(100).price(123.50).build();

            assertEquals(test.createTrade(tradeInfo, 100, 123.50, ReferenceData.empty()), expectedTrade);
        }
        //-------------------------------------------------------------------------
        public virtual void test_builder()
        {
            CapitalIndexedBondSecurity test = sut();

            assertEquals(test.Info, INFO);
            assertEquals(test.SecurityId, PRODUCT.SecurityId);
            assertEquals(test.Currency, PRODUCT.Currency);
            assertEquals(test.UnderlyingIds, ImmutableSet.of());
            assertEquals(test.FirstIndexValue, PRODUCT.FirstIndexValue);
        }
 public virtual void test_builder_fail()
 {
     assertThrowsIllegalArg(() => CapitalIndexedBondSecurity.builder().info(INFO).dayCount(DAY_COUNT).rateCalculation(RATE).legalEntityId(LEGAL_ENTITY).currency(EUR).notional(NOTIONAL).accrualSchedule(PERIOD_SCHEDULE).settlementDateOffset(DATE_OFFSET).yieldConvention(YIELD_CONVENTION).exCouponPeriod(DaysAdjustment.ofBusinessDays(EX_COUPON_DAYS, EUTA, BUSINESS_ADJUST)).build());
     assertThrowsIllegalArg(() => CapitalIndexedBondSecurity.builder().info(INFO).dayCount(DAY_COUNT).rateCalculation(RATE).legalEntityId(LEGAL_ENTITY).currency(EUR).notional(NOTIONAL).accrualSchedule(PERIOD_SCHEDULE).settlementDateOffset(DaysAdjustment.ofBusinessDays(-3, EUTA)).yieldConvention(YIELD_CONVENTION).build());
 }
 internal static CapitalIndexedBondSecurity createSecurity(CapitalIndexedBond product)
 {
     return(CapitalIndexedBondSecurity.builder().info(SecurityInfo.of(product.SecurityId, INFO.PriceInfo)).currency(product.Currency).notional(product.Notional).accrualSchedule(product.AccrualSchedule).rateCalculation(product.RateCalculation).dayCount(product.DayCount).yieldConvention(product.YieldConvention).legalEntityId(product.LegalEntityId).settlementDateOffset(product.SettlementDateOffset).exCouponPeriod(product.ExCouponPeriod).build());
 }