//-------------------------------------------------------------------------
        public virtual void test_builder_noDeliveryDate()
        {
            ResolvedBondFuture @base = sut();
            ResolvedBondFuture test  = ResolvedBondFuture.builder().securityId(@base.SecurityId).deliveryBasket(@base.DeliveryBasket).conversionFactors(@base.ConversionFactors).firstNoticeDate(@base.FirstNoticeDate).lastNoticeDate(@base.LastNoticeDate).firstDeliveryDate(@base.FirstDeliveryDate).lastDeliveryDate(@base.LastDeliveryDate).lastTradeDate(@base.LastTradeDate).rounding(@base.Rounding).build();

            assertEquals(test, @base);
        }
        public virtual void test_builder_fail()
        {
            ResolvedBondFuture @base = sut();

            // wrong size
            assertThrowsIllegalArg(() => ResolvedBondFuture.builder().securityId(@base.SecurityId).deliveryBasket(@base.DeliveryBasket.subList(0, 1)).conversionFactors(@base.ConversionFactors).firstNoticeDate(@base.FirstNoticeDate).lastNoticeDate(@base.LastNoticeDate).lastTradeDate(@base.LastTradeDate).build());
            // first notice date missing
            assertThrowsIllegalArg(() => ResolvedBondFuture.builder().securityId(@base.SecurityId).deliveryBasket(@base.DeliveryBasket).conversionFactors(@base.ConversionFactors).lastNoticeDate(@base.LastNoticeDate).lastTradeDate(@base.LastTradeDate).build());
            // last notice date missing
            assertThrowsIllegalArg(() => ResolvedBondFuture.builder().securityId(@base.SecurityId).deliveryBasket(@base.DeliveryBasket).conversionFactors(@base.ConversionFactors).firstNoticeDate(@base.FirstNoticeDate).lastTradeDate(@base.LastTradeDate).build());
            // basket list empty
            assertThrowsIllegalArg(() => ResolvedBondFuture.builder().securityId(@base.SecurityId).firstNoticeDate(@base.FirstNoticeDate).lastNoticeDate(@base.LastNoticeDate).lastTradeDate(@base.LastTradeDate).build());
            // notional mismatch
            ResolvedFixedCouponBond bond0 = @base.DeliveryBasket.get(0);
            ResolvedFixedCouponBond bond1 = bond0.toBuilder().nominalPayment(Payment.of(USD, 100, date(2016, 6, 30))).build();

            assertThrowsIllegalArg(() => ResolvedBondFuture.builder().securityId(@base.SecurityId).deliveryBasket(bond0, bond1).conversionFactors(1d, 2d).firstNoticeDate(@base.FirstNoticeDate).firstDeliveryDate(@base.FirstDeliveryDate).lastNoticeDate(@base.LastNoticeDate).lastDeliveryDate(@base.LastDeliveryDate).lastTradeDate(@base.LastTradeDate).rounding(@base.Rounding).build());
        }
        //-------------------------------------------------------------------------
        public virtual void test_resolve()
        {
            ResolvedBondFuture expected = ResolvedBondFuture.builder().securityId(SECURITY_ID).deliveryBasket(RESOLVED_BASKET).conversionFactors(CONVERSION_FACTOR).lastTradeDate(LAST_TRADING_DATE).firstNoticeDate(FIRST_NOTICE_DATE).lastNoticeDate(LAST_NOTICE_DATE).firstDeliveryDate(FIRST_DELIVERY_DATE).lastDeliveryDate(LAST_DELIVERY_DATE).rounding(ROUNDING).build();

            assertEquals(sut().resolve(REF_DATA), expected);
        }