Package com.opengamma.analytics.financial.schedule

Source Code of com.opengamma.analytics.financial.schedule.ScheduleFactoryTest

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

import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertFalse;
import static org.testng.internal.junit.ArrayAsserts.assertArrayEquals;

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

import com.opengamma.financial.convention.frequency.Frequency;
import com.opengamma.financial.convention.frequency.PeriodFrequency;
import com.opengamma.financial.convention.frequency.SimpleFrequencyFactory;
import com.opengamma.util.time.DateUtils;

/**
*
*/
public class ScheduleFactoryTest {
  private static final LocalDate START1 = LocalDate.of(2000, 1, 31);
  private static final LocalDate END1 = LocalDate.of(2002, 1, 31);
  private static final ZonedDateTime START2 = DateUtils.getUTCDate(2000, 1, 31);
  private static final ZonedDateTime END2 = DateUtils.getUTCDate(2002, 1, 31);
  private static final Frequency QUARTERLY = SimpleFrequencyFactory.INSTANCE.getFrequency(4);

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testNullStartDate1() {
    ScheduleFactory.getSchedule(null, END1, QUARTERLY, true, true, false);
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testNullEndDate1() {
    ScheduleFactory.getSchedule(START1, null, QUARTERLY, true, true, false);
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testNullFrequency1() {
    ScheduleFactory.getSchedule(START1, END1, null, true, false, false);
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testBadFrequency1() {
    final Frequency frequency = new Frequency() {

      @Override
      public String getConventionName() {
        return null;
      }
    };
    ScheduleFactory.getSchedule(START1, END1, frequency, true, false, false);
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testBadPeriodsPerYear1() {
    ScheduleFactory.getSchedule(START1, END1, 5, true, false, false);
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testWeeklyWithEOMAdjustment1() {
    ScheduleFactory.getSchedule(START1, END1, 52, true, true, false);
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testDailyWithEOMAdjustment1() {
    ScheduleFactory.getSchedule(START1, END1, 365, true, true, false);
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testNullStartDate2() {
    ScheduleFactory.getSchedule(null, END2, QUARTERLY, true, true, false);
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testNullEndDate2() {
    ScheduleFactory.getSchedule(START2, null, QUARTERLY, true, true, false);
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testNullFrequency2() {
    ScheduleFactory.getSchedule(START2, END2, null, true, false, false);
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testBadFrequency2() {
    final Frequency frequency = new Frequency() {

      @Override
      public String getConventionName() {
        return null;
      }
    };
    ScheduleFactory.getSchedule(START2, END2, frequency, true, false, false);
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testBadPeriodsPerYear2() {
    ScheduleFactory.getSchedule(START2, END2, 5, true, false, false);
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testWeeklyWithEOMAdjustment2() {
    ScheduleFactory.getSchedule(START2, END2, 52, true, true, false);
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testDailyWithEOMAdjustment2() {
    ScheduleFactory.getSchedule(START2, END2, 365, true, true, false);
  }

  @Test
  public void testDaily() {
    final LocalDate[] schedule1 = ScheduleFactory.getSchedule(START1, END1, 365, false, true, false);
    assertArrayEquals(schedule1, ScheduleFactory.getSchedule(START1, END1, 366, false, true, false));
    assertArrayEquals(schedule1, ScheduleFactory.getSchedule(START1, END1, SimpleFrequencyFactory.INSTANCE.getFrequency("Daily"), false, true, false));
    assertArrayEquals(schedule1, ScheduleFactory.getSchedule(START1, END1, PeriodFrequency.DAILY, false, true, false));
    assertArrayEquals(schedule1, ScheduleFactory.getSchedule(START1, END1, 365, false, true, true));
    assertArrayEquals(schedule1, ScheduleFactory.getSchedule(START1, END1, 366, false, true, true));
    assertArrayEquals(schedule1, ScheduleFactory.getSchedule(START1, END1, SimpleFrequencyFactory.INSTANCE.getFrequency("Daily"), false, true, true));
    assertArrayEquals(schedule1, ScheduleFactory.getSchedule(START1, END1, PeriodFrequency.DAILY, false, true, true));
    assertArrayEquals(schedule1, ScheduleFactory.getSchedule(START1, END1, 365, false, false, false));
    assertArrayEquals(schedule1, ScheduleFactory.getSchedule(START1, END1, 366, false, false, false));
    assertArrayEquals(schedule1, ScheduleFactory.getSchedule(START1, END1, SimpleFrequencyFactory.INSTANCE.getFrequency("Daily"), false, false, false));
    assertArrayEquals(schedule1, ScheduleFactory.getSchedule(START1, END1, PeriodFrequency.DAILY, false, true, false));
    assertArrayEquals(schedule1, ScheduleFactory.getSchedule(START1, END1, 365, false, false, true));
    assertArrayEquals(schedule1, ScheduleFactory.getSchedule(START1, END1, 366, false, false, true));
    assertArrayEquals(schedule1, ScheduleFactory.getSchedule(START1, END1, SimpleFrequencyFactory.INSTANCE.getFrequency("Daily"), false, false, true));
    assertArrayEquals(schedule1, ScheduleFactory.getSchedule(START1, END1, PeriodFrequency.DAILY, false, true, true));
    final ZonedDateTime[] schedule2 = ScheduleFactory.getSchedule(START2, END2, 365, false, true, false);
    assertArrayEquals(schedule2, ScheduleFactory.getSchedule(START2, END2, 366, false, true, false));
    assertArrayEquals(schedule2, ScheduleFactory.getSchedule(START2, END2, SimpleFrequencyFactory.INSTANCE.getFrequency("Daily"), false, true, false));
    assertArrayEquals(schedule2, ScheduleFactory.getSchedule(START2, END2, PeriodFrequency.DAILY, false, true, false));
    assertArrayEquals(schedule2, ScheduleFactory.getSchedule(START2, END2, 365, false, true, true));
    assertArrayEquals(schedule2, ScheduleFactory.getSchedule(START2, END2, 366, false, true, true));
    assertArrayEquals(schedule2, ScheduleFactory.getSchedule(START2, END2, SimpleFrequencyFactory.INSTANCE.getFrequency("Daily"), false, true, true));
    assertArrayEquals(schedule2, ScheduleFactory.getSchedule(START2, END2, PeriodFrequency.DAILY, false, true, true));
    assertArrayEquals(schedule2, ScheduleFactory.getSchedule(START2, END2, 365, false, false, false));
    assertArrayEquals(schedule2, ScheduleFactory.getSchedule(START2, END2, 366, false, false, false));
    assertArrayEquals(schedule2, ScheduleFactory.getSchedule(START2, END2, SimpleFrequencyFactory.INSTANCE.getFrequency("Daily"), false, false, false));
    assertArrayEquals(schedule2, ScheduleFactory.getSchedule(START2, END2, PeriodFrequency.DAILY, false, true, false));
    assertArrayEquals(schedule2, ScheduleFactory.getSchedule(START2, END2, 365, false, false, true));
    assertArrayEquals(schedule2, ScheduleFactory.getSchedule(START2, END2, 366, false, false, true));
    assertArrayEquals(schedule2, ScheduleFactory.getSchedule(START2, END2, SimpleFrequencyFactory.INSTANCE.getFrequency("Daily"), false, false, true));
    assertArrayEquals(schedule2, ScheduleFactory.getSchedule(START2, END2, PeriodFrequency.DAILY, false, true, true));
    assertEquals(schedule1.length, schedule2.length);
    for (int i = 0; i < schedule1.length; i++) {
      assertEquals(schedule1[i], schedule2[i].toLocalDate());
    }
  }

  @Test
  public void testWeeklyBackward() {
    final LocalDate[] schedule1 = ScheduleFactory.getSchedule(START1, END1, 52, false, true, false);
    assertArrayEquals(schedule1, ScheduleFactory.getSchedule(START1, END1, SimpleFrequencyFactory.INSTANCE.getFrequency("Weekly"), false, true, false));
    assertArrayEquals(schedule1, ScheduleFactory.getSchedule(START1, END1, PeriodFrequency.WEEKLY, false, true, false));
    assertArrayEquals(schedule1, ScheduleFactory.getSchedule(START1, END1, 52, false, true, true));
    assertArrayEquals(schedule1, ScheduleFactory.getSchedule(START1, END1, SimpleFrequencyFactory.INSTANCE.getFrequency("Weekly"), false, true, true));
    assertArrayEquals(schedule1, ScheduleFactory.getSchedule(START1, END1, PeriodFrequency.WEEKLY, false, true, true));
    final LocalDate[] schedule2 = ScheduleFactory.getSchedule(START1, END1, 52, false, false, false);
    assertFalse(schedule1.equals(schedule2));
    assertArrayEquals(schedule2, ScheduleFactory.getSchedule(START1, END1, SimpleFrequencyFactory.INSTANCE.getFrequency("Weekly"), false, false, false));
    assertArrayEquals(schedule2, ScheduleFactory.getSchedule(START1, END1, PeriodFrequency.WEEKLY, false, false, false));
    final ZonedDateTime[] schedule3 = ScheduleFactory.getSchedule(START2, END2, 52, false, true, false);
    assertArrayEquals(schedule3, ScheduleFactory.getSchedule(START2, END2, SimpleFrequencyFactory.INSTANCE.getFrequency("Weekly"), false, true, false));
    assertArrayEquals(schedule3, ScheduleFactory.getSchedule(START2, END2, PeriodFrequency.WEEKLY, false, true, false));
    final ZonedDateTime[] schedule4 = ScheduleFactory.getSchedule(START2, END2, 52, false, false, false);
    assertFalse(schedule3.equals(schedule4));
    assertArrayEquals(schedule4, ScheduleFactory.getSchedule(START2, END2, 52, false, false, false));
    assertArrayEquals(schedule4, ScheduleFactory.getSchedule(START2, END2, SimpleFrequencyFactory.INSTANCE.getFrequency("Weekly"), false, false, false));
    assertArrayEquals(schedule4, ScheduleFactory.getSchedule(START2, END2, PeriodFrequency.WEEKLY, false, false, false));
    assertEquals(schedule1.length, schedule2.length);
    for (int i = 0; i < schedule1.length; i++) {
      assertEquals(schedule1[i], schedule3[i].toLocalDate());
    }
  }
}
TOP

Related Classes of com.opengamma.analytics.financial.schedule.ScheduleFactoryTest

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.