/** * 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.currency.Currency.USD; import static com.opengamma.strata.basics.date.BusinessDayConventions.FOLLOWING; import static com.opengamma.strata.basics.date.DayCounts.ACT_360; import static com.opengamma.strata.basics.date.HolidayCalendarIds.USNY; import static com.opengamma.strata.basics.schedule.StubConvention.SHORT_INITIAL; import static com.opengamma.strata.collect.TestHelper.assertSerialization; import static com.opengamma.strata.collect.TestHelper.assertThrowsIllegalArg; 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 org.testng.Assert.assertEquals; import java.util.Optional; import java.util.OptionalDouble; import org.testng.annotations.Test; import com.opengamma.strata.basics.date.BusinessDayAdjustment; import com.opengamma.strata.basics.schedule.Frequency; /** * Test. */ @Test public class ResolvedCdsTest { //------------------------------------------------------------------------- public void test_builder_notEnoughData() { assertThrowsIllegalArg(() -> ResolvedCds.builder().build()); } //------------------------------------------------------------------------- public void test_getters() { assertEquals(sutSingleName().getUpfrontFeeAmount(), OptionalDouble.of(1_000_000d)); assertEquals(sutSingleName().getUpfrontFeePaymentDate(), Optional.of(date(2014, 3, 23))); } //------------------------------------------------------------------------- public void coverage() { coverImmutableBean(sutSingleName()); coverImmutableBean(sutIndex()); coverBeanEquals(sutSingleName(), sutIndex()); } public void test_serialization() { assertSerialization(sutSingleName()); assertSerialization(sutIndex()); } //------------------------------------------------------------------------- static ResolvedCds sutSingleName() { return ResolvedCds.builder() .buySellProtection(BUY) .currency(USD) .notional(100_000_000d) .coupon(.00100) .startDate(date(2014, 3, 20)) .endDate(date(2019, 6, 20)) .businessDayAdjustment(BusinessDayAdjustment.of(FOLLOWING, USNY)) .referenceInformation(SingleNameReferenceInformationTest.sut()) .payAccruedOnDefault(true) .paymentInterval(Frequency.P3M.getPeriod()) .stubConvention(SHORT_INITIAL) .accrualDayCount(ACT_360) .upfrontFeeAmount(1_000_000d) .upfrontFeePaymentDate(date(2014, 3, 23)) .build(); } static ResolvedCds sutIndex() { return ResolvedCds.builder() .buySellProtection(BUY) .currency(USD) .notional(100_000_000d) .coupon(.00100) .startDate(date(2014, 3, 20)) .endDate(date(2019, 6, 20)) .businessDayAdjustment(BusinessDayAdjustment.of(FOLLOWING, USNY)) .referenceInformation(IndexReferenceInformationTest.sut()) .payAccruedOnDefault(true) .paymentInterval(Frequency.P3M.getPeriod()) .stubConvention(SHORT_INITIAL) .accrualDayCount(ACT_360) .upfrontFeeAmount(1_000_000d) .upfrontFeePaymentDate(date(2014, 3, 23)) .build(); } }