/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.financial.instrument.index;
import static org.testng.AssertJUnit.assertEquals;
import org.testng.annotations.Test;
import org.threeten.bp.Period;
import com.opengamma.financial.convention.businessday.BusinessDayConvention;
import com.opengamma.financial.convention.businessday.BusinessDayConventions;
import com.opengamma.financial.convention.calendar.Calendar;
import com.opengamma.financial.convention.calendar.MondayToFridayCalendar;
import com.opengamma.financial.convention.daycount.DayCount;
import com.opengamma.util.test.TestGroup;
/**
* Tests related to the construction of Fixed/ON (OIS) generators.
*/
@Test(groups = TestGroup.UNIT)
public class GeneratorSwapFixedONTest {
private static final Calendar NYC = new MondayToFridayCalendar("NYC");
private static final IndexON INDEX_FEDFUND = IndexONMaster.getInstance().getIndex("FED FUND");
private static final String USD_NAME = "USD1YFEDFUND";
private static final Period USD_PERIOD = Period.ofMonths(12);
private static final DayCount USD_DAYCOUNT_FIXED = INDEX_FEDFUND.getDayCount();
private static final BusinessDayConvention USD_BUSINESS_DAY = BusinessDayConventions.MODIFIED_FOLLOWING;
private static final boolean USD_IS_EOM = true;
private static final int USD_SPOT_LAG = 2;
private static final GeneratorSwapFixedON USD_GENERATOR_OIS = new GeneratorSwapFixedON(USD_NAME, INDEX_FEDFUND, USD_PERIOD, USD_DAYCOUNT_FIXED, USD_BUSINESS_DAY, USD_IS_EOM, USD_SPOT_LAG, NYC);
@Test(expectedExceptions = IllegalArgumentException.class)
public void nullCurrency() {
new GeneratorSwapFixedON(null, INDEX_FEDFUND, USD_PERIOD, USD_DAYCOUNT_FIXED, USD_BUSINESS_DAY, USD_IS_EOM, USD_SPOT_LAG, NYC);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void nullPeriod() {
new GeneratorSwapFixedON(USD_NAME, INDEX_FEDFUND, null, USD_DAYCOUNT_FIXED, USD_BUSINESS_DAY, USD_IS_EOM, USD_SPOT_LAG, NYC);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void nullDayCount() {
new GeneratorSwapFixedON(USD_NAME, INDEX_FEDFUND, USD_PERIOD, null, USD_BUSINESS_DAY, USD_IS_EOM, USD_SPOT_LAG, NYC);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void nullBusinessDay() {
new GeneratorSwapFixedON(USD_NAME, INDEX_FEDFUND, USD_PERIOD, USD_DAYCOUNT_FIXED, null, USD_IS_EOM, USD_SPOT_LAG, NYC);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void nullIndex() {
new GeneratorSwapFixedON(USD_NAME, null, USD_PERIOD, USD_DAYCOUNT_FIXED, USD_BUSINESS_DAY, USD_IS_EOM, USD_SPOT_LAG, NYC);
}
@Test
/**
* Tests the getters.
*/
public void getter() {
assertEquals("Generator OIS: getter", USD_NAME, USD_GENERATOR_OIS.getName());
assertEquals("Generator OIS: getter", USD_PERIOD, USD_GENERATOR_OIS.getLegsPeriod());
assertEquals("Generator OIS: getter", USD_DAYCOUNT_FIXED, USD_GENERATOR_OIS.getFixedLegDayCount());
assertEquals("Generator OIS: getter", USD_BUSINESS_DAY, USD_GENERATOR_OIS.getBusinessDayConvention());
assertEquals("Generator OIS: getter", USD_IS_EOM, USD_GENERATOR_OIS.isEndOfMonth());
assertEquals("Generator OIS: getter", INDEX_FEDFUND, USD_GENERATOR_OIS.getIndex());
assertEquals("Generator OIS: getter", true, USD_GENERATOR_OIS.isStubShort());
assertEquals("Generator OIS: getter", true, USD_GENERATOR_OIS.isFromEnd());
assertEquals("Generator OIS: getter", USD_SPOT_LAG, USD_GENERATOR_OIS.getSpotLag());
}
@Test
/**
* Tests the standard USD OIS builders.
*/
public void usdStandard() {
final GeneratorSwapFixedON usdStandard = GeneratorSwapFixedONMaster.getInstance().getGenerator("USD1YFEDFUND", NYC);
assertEquals("Generator OIS: standard", USD_NAME, usdStandard.getName());
assertEquals("Generator OIS: standard", USD_PERIOD, usdStandard.getLegsPeriod());
assertEquals("Generator OIS: standard", USD_DAYCOUNT_FIXED, usdStandard.getFixedLegDayCount());
assertEquals("Generator OIS: standard", USD_BUSINESS_DAY, usdStandard.getBusinessDayConvention());
assertEquals("Generator OIS: standard", USD_IS_EOM, usdStandard.isEndOfMonth());
assertEquals("Generator OIS: standard", INDEX_FEDFUND, usdStandard.getIndex());
assertEquals("Generator OIS: standard", true, usdStandard.isStubShort());
assertEquals("Generator OIS: standard", true, usdStandard.isFromEnd());
}
}