Package com.opengamma.analytics.financial.instrument.annuity

Source Code of com.opengamma.analytics.financial.instrument.annuity.AnnuityPaymentFixedDefinitionTest

/**
* Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.financial.instrument.annuity;

import static org.testng.AssertJUnit.assertEquals;

import org.testng.annotations.Test;
import org.threeten.bp.ZonedDateTime;

import com.opengamma.analytics.financial.instrument.payment.PaymentFixedDefinition;
import com.opengamma.analytics.financial.interestrate.annuity.derivative.AnnuityPaymentFixed;
import com.opengamma.analytics.financial.interestrate.payments.derivative.PaymentFixed;
import com.opengamma.analytics.financial.schedule.NoHolidayCalendar;
import com.opengamma.financial.convention.calendar.Calendar;
import com.opengamma.util.money.Currency;
import com.opengamma.util.time.DateUtils;

public class AnnuityPaymentFixedDefinitionTest {
  private static final Calendar CALENDAR = new NoHolidayCalendar();
  private static final Currency CUR = Currency.EUR;
  private static final ZonedDateTime[] PAYMENT_DATE = new ZonedDateTime[] {DateUtils.getUTCDate(2011, 7, 13), DateUtils.getUTCDate(2011, 10, 13), DateUtils.getUTCDate(2012, 1, 13)};
  private static final double[] PAYMENT_AMOUNT = new double[] {100.0, 150.0, 1.0};

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testNullPayment() {
    new AnnuityPaymentFixedDefinition(null, null);
  }

  @Test
  public void testGetter() {
    final PaymentFixedDefinition[] payment = new PaymentFixedDefinition[PAYMENT_DATE.length];
    for (int looppay = 0; looppay < PAYMENT_DATE.length; looppay++) {
      payment[looppay] = new PaymentFixedDefinition(CUR, PAYMENT_DATE[looppay], PAYMENT_AMOUNT[looppay]);
    }
    final AnnuityPaymentFixedDefinition annuity = new AnnuityPaymentFixedDefinition(payment, CALENDAR);
    assertEquals(CUR, annuity.getCurrency());
  }

  @SuppressWarnings("deprecation")
  @Test
  public void testConverterDeprecated() {
    final PaymentFixedDefinition[] annuityDefinitions = new PaymentFixedDefinition[PAYMENT_DATE.length];
    PaymentFixed[] payment = new PaymentFixed[PAYMENT_DATE.length];
    ZonedDateTime date = DateUtils.getUTCDate(2011, 6, 19);
    final String name = "A";
    for (int looppay = 0; looppay < PAYMENT_DATE.length; looppay++) {
      annuityDefinitions[looppay] = new PaymentFixedDefinition(CUR, PAYMENT_DATE[looppay], PAYMENT_AMOUNT[looppay]);
      payment[looppay] = annuityDefinitions[looppay].toDerivative(date, name);
    }
    final AnnuityPaymentFixedDefinition definition = new AnnuityPaymentFixedDefinition(annuityDefinitions, CALENDAR);
    AnnuityPaymentFixed annuity = new AnnuityPaymentFixed(payment);
    assertEquals(annuity, definition.toDerivative(date, name));
    date = DateUtils.getUTCDate(2011, 8, 19);
    payment = new PaymentFixed[PAYMENT_DATE.length - 1];
    for (int looppay = 0; looppay < PAYMENT_DATE.length; looppay++) {
      annuityDefinitions[looppay] = new PaymentFixedDefinition(CUR, PAYMENT_DATE[looppay], PAYMENT_AMOUNT[looppay]);
      if (looppay > 0) {
        payment[looppay - 1] = annuityDefinitions[looppay].toDerivative(date, name);
      }
    }
    annuity = new AnnuityPaymentFixed(payment);
    assertEquals(annuity, definition.toDerivative(date, name));
  }

  @Test
  public void testConverter() {
    final PaymentFixedDefinition[] annuityDefinitions = new PaymentFixedDefinition[PAYMENT_DATE.length];
    PaymentFixed[] payment = new PaymentFixed[PAYMENT_DATE.length];
    ZonedDateTime date = DateUtils.getUTCDate(2011, 6, 19);
    for (int looppay = 0; looppay < PAYMENT_DATE.length; looppay++) {
      annuityDefinitions[looppay] = new PaymentFixedDefinition(CUR, PAYMENT_DATE[looppay], PAYMENT_AMOUNT[looppay]);
      payment[looppay] = annuityDefinitions[looppay].toDerivative(date);
    }
    final AnnuityPaymentFixedDefinition definition = new AnnuityPaymentFixedDefinition(annuityDefinitions, CALENDAR);
    AnnuityPaymentFixed annuity = new AnnuityPaymentFixed(payment);
    assertEquals(annuity, definition.toDerivative(date));
    date = DateUtils.getUTCDate(2011, 8, 19);
    payment = new PaymentFixed[PAYMENT_DATE.length - 1];
    for (int looppay = 0; looppay < PAYMENT_DATE.length; looppay++) {
      annuityDefinitions[looppay] = new PaymentFixedDefinition(CUR, PAYMENT_DATE[looppay], PAYMENT_AMOUNT[looppay]);
      if (looppay > 0) {
        payment[looppay - 1] = annuityDefinitions[looppay].toDerivative(date);
      }
    }
    annuity = new AnnuityPaymentFixed(payment);
    assertEquals(annuity, definition.toDerivative(date));
  }
}
TOP

Related Classes of com.opengamma.analytics.financial.instrument.annuity.AnnuityPaymentFixedDefinitionTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.