/**
* Copyright (C) 2015 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.strata.product.credit;
import static com.opengamma.strata.basics.date.BusinessDayConventions.FOLLOWING;
import static com.opengamma.strata.basics.date.HolidayCalendarIds.USNY;
import static com.opengamma.strata.collect.TestHelper.assertSerialization;
import static com.opengamma.strata.collect.TestHelper.coverBeanEquals;
import static com.opengamma.strata.collect.TestHelper.coverImmutableBean;
import static com.opengamma.strata.collect.TestHelper.date;
import static com.opengamma.strata.product.common.BuySell.BUY;
import static com.opengamma.strata.product.credit.ReferenceInformationType.INDEX;
import static com.opengamma.strata.product.credit.ReferenceInformationType.SINGLE_NAME;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
import org.testng.annotations.Test;
import com.opengamma.strata.basics.ReferenceData;
import com.opengamma.strata.basics.date.BusinessDayAdjustment;
/**
* Test {@link Cds}.
*/
@Test
public class CdsTest {
private static final ReferenceData REF_DATA = ReferenceData.standard();
//-------------------------------------------------------------------------
public void test_getStartDate() {
assertEquals(sutSingleName().getStartDate(), date(2014, 3, 20));
}
public void test_getEndDate() {
assertEquals(sutSingleName().getEndDate(), date(2019, 6, 20));
}
public void test_getBusinessDayAdjustment() {
assertEquals(sutSingleName().getBusinessDayAdjustment().getConvention(), FOLLOWING);
assertEquals(sutSingleName().getBusinessDayAdjustment().getCalendar(), USNY);
}
public void test_getReferenceInformation() {
assertEquals(sutSingleName().getReferenceInformation().getType(), SINGLE_NAME);
assertEquals(sutIndex().getReferenceInformation().getType(), INDEX);
}
public void test_isPayAccruedOnDefault() {
assertTrue(sutSingleName().isPayAccruedOnDefault());
}
//-------------------------------------------------------------------------
public void test_resolve() {
assertEquals(sutSingleName().resolve(REF_DATA), ResolvedCdsTest.sutSingleName());
assertEquals(sutIndex().resolve(REF_DATA), ResolvedCdsTest.sutIndex());
}
//-------------------------------------------------------------------------
public void coverage() {
coverImmutableBean(sutSingleName());
coverImmutableBean(sutIndex());
coverBeanEquals(sutSingleName(), sutIndex());
}
public void test_serialization() {
assertSerialization(sutSingleName());
assertSerialization(sutIndex());
}
//-------------------------------------------------------------------------
static Cds sutSingleName() {
return Cds.builder()
.buySellProtection(BUY)
.startDate(date(2014, 3, 20))
.endDate(date(2019, 6, 20))
.businessDayAdjustment(BusinessDayAdjustment.of(FOLLOWING, USNY))
.referenceInformation(SingleNameReferenceInformationTest.sut())
.feeLeg(FeeLegTest.sut())
.payAccruedOnDefault(true)
.build();
}
static Cds sutIndex() {
return Cds.builder()
.buySellProtection(BUY)
.startDate(date(2014, 3, 20))
.endDate(date(2019, 6, 20))
.businessDayAdjustment(BusinessDayAdjustment.of(FOLLOWING, USNY))
.referenceInformation(IndexReferenceInformationTest.sut())
.feeLeg(FeeLegTest.sut())
.payAccruedOnDefault(true)
.build();
}
}