@Test
  public void test() {
    final CouponFixedDefinition[] coupons = new CouponFixedDefinition[PAYMENT_DATES.length];
    // First coupon uses settlement date
    final double sign = IS_PAYER ? -1.0 : 1.0;
    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);

    assertEquals(fixedAnnuity.isPayer(), IS_PAYER);
    for (int loopcpn = 0; loopcpn < PAYMENT_DATES.length; loopcpn++) {
      assertEquals(fixedAnnuity.getNthPayment(loopcpn), coupons[loopcpn]);
    }
  }
 @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));
 }