@Test public void testEqualHash() { final double sign = IS_PAYER ? -1.0 : 1.0; final CouponFixedDefinition[] coupons = new CouponFixedDefinition[PAYMENT_DATES.length]; coupons[0] = new CouponFixedDefinition( CUR, PAYMENT_DATES[0], SETTLEMENT_DATE, PAYMENT_DATES[0], DAY_COUNT.getDayCountFraction(SETTLEMENT_DATE, PAYMENT_DATES[0]), sign * NOTIONAL, RATE); for (int loopcpn = 1; loopcpn < PAYMENT_DATES.length; loopcpn++) { coupons[loopcpn] = new CouponFixedDefinition( CUR, PAYMENT_DATES[loopcpn], PAYMENT_DATES[loopcpn - 1], PAYMENT_DATES[loopcpn], DAY_COUNT.getDayCountFraction(PAYMENT_DATES[loopcpn - 1], PAYMENT_DATES[loopcpn]), sign * NOTIONAL, RATE); } final AnnuityCouponFixedDefinition fixedAnnuity = new AnnuityCouponFixedDefinition(coupons); final AnnuityCouponFixedDefinition fixedAnnuity2 = AnnuityCouponFixedDefinition.from( CUR, SETTLEMENT_DATE, ANNUITY_TENOR, PAYMENT_TENOR, CALENDAR, DAY_COUNT, BUSINESS_DAY, IS_EOM, NOTIONAL, RATE, IS_PAYER); assertEquals(fixedAnnuity, fixedAnnuity2); assertEquals(fixedAnnuity.hashCode(), fixedAnnuity2.hashCode()); final AnnuityCouponFixedDefinition modifiedFixedAnnuity1 = AnnuityCouponFixedDefinition.from( CUR, SETTLEMENT_DATE, ANNUITY_TENOR, PAYMENT_TENOR, CALENDAR, DAY_COUNT, BUSINESS_DAY, IS_EOM, NOTIONAL, RATE, !IS_PAYER); assertFalse(fixedAnnuity.equals(modifiedFixedAnnuity1)); final AnnuityCouponFixedDefinition modifiedFixedAnnuity2 = AnnuityCouponFixedDefinition.from( CUR, SETTLEMENT_DATE, ANNUITY_TENOR, PAYMENT_TENOR, CALENDAR, DAY_COUNT, BUSINESS_DAY, IS_EOM, NOTIONAL, RATE, IS_PAYER); assertFalse(modifiedFixedAnnuity2.equals(modifiedFixedAnnuity1)); final AnnuityCouponFixedDefinition bond1 = AnnuityCouponFixedDefinition.fromAccrualUnadjusted( CUR, SETTLEMENT_DATE, MATURITY_DATE, PAYMENT_TENOR, true, true, CALENDAR, DAY_COUNT, BUSINESS_DAY, IS_EOM, NOTIONAL, RATE, !IS_PAYER); AnnuityCouponFixedDefinition bond2 = AnnuityCouponFixedDefinition.fromAccrualUnadjusted( CUR, SETTLEMENT_DATE, MATURITY_DATE, PAYMENT_TENOR, true, true, CALENDAR, DAY_COUNT, BUSINESS_DAY, IS_EOM, NOTIONAL, RATE, IS_PAYER); assertFalse(bond1.equals(bond2)); bond2 = AnnuityCouponFixedDefinition.fromAccrualUnadjusted( CUR, SETTLEMENT_DATE, MATURITY_DATE, PAYMENT_TENOR, 2, true, true, CALENDAR, DAY_COUNT, BUSINESS_DAY, IS_EOM, NOTIONAL, RATE, IS_PAYER); assertFalse(bond1.equals(bond2)); bond2 = AnnuityCouponFixedDefinition.fromAccrualUnadjusted( CUR, SETTLEMENT_DATE, MATURITY_DATE, PAYMENT_TENOR, 2, true, true, CALENDAR, DAY_COUNT, BUSINESS_DAY, IS_EOM, NOTIONAL, RATE, !IS_PAYER); assertEquals(bond1, bond2); final CouponFixedDefinition[] payments = bond2.getPayments(); bond2 = new AnnuityCouponFixedDefinition(payments); assertEquals(bond1, bond2); }
@Test public void testStaticConstruction() { AnnuityCouponFixedDefinition definition1 = AnnuityCouponFixedDefinition.from( CUR, SETTLEMENT_DATE, ANNUITY_TENOR, PAYMENT_TENOR, CALENDAR, DAY_COUNT, BUSINESS_DAY, IS_EOM, NOTIONAL, RATE, IS_PAYER); AnnuityCouponFixedDefinition definition2 = AnnuityCouponFixedDefinition.from( CUR, SETTLEMENT_DATE, MATURITY_DATE, PAYMENT_FREQUENCY, CALENDAR, DAY_COUNT, BUSINESS_DAY, IS_EOM, NOTIONAL, RATE, IS_PAYER); assertEquals(definition1, definition2); assertEquals(IS_PAYER, definition1.isPayer()); definition2 = AnnuityCouponFixedDefinition.from( CUR, SETTLEMENT_DATE, MATURITY_DATE, PAYMENT_FREQUENCY, CALENDAR, DAY_COUNT, BUSINESS_DAY, IS_EOM, NOTIONAL, RATE, !IS_PAYER); assertFalse(definition1.equals(definition2)); assertEquals(!IS_PAYER, definition2.isPayer()); definition1 = AnnuityCouponFixedDefinition.fromAccrualUnadjusted( CUR, SETTLEMENT_DATE, MATURITY_DATE, PAYMENT_TENOR, true, true, CALENDAR, DAY_COUNT, BUSINESS_DAY, IS_EOM, NOTIONAL, RATE, IS_PAYER); definition2 = AnnuityCouponFixedDefinition.fromAccrualUnadjusted( CUR, SETTLEMENT_DATE, MATURITY_DATE, PAYMENT_TENOR, 2, true, true, CALENDAR, DAY_COUNT, BUSINESS_DAY, IS_EOM, NOTIONAL, RATE, IS_PAYER); assertEquals(definition1, definition2); definition2 = AnnuityCouponFixedDefinition.fromAccrualUnadjusted( CUR, SETTLEMENT_DATE, MATURITY_DATE, PAYMENT_TENOR, 2, true, true, CALENDAR, DAY_COUNT, BUSINESS_DAY, IS_EOM, NOTIONAL, RATE, !IS_PAYER); assertFalse(definition1.equals(definition2)); }