Example #1
0
 public void test_ofCurves_missingCurve() {
   CurveGroupDefinition definition =
       CurveGroupDefinition.builder()
           .name(CurveGroupName.of("group"))
           .addCurve(DISCOUNT_NAME, GBP, GBP_LIBOR_1M)
           .addForwardCurve(IBOR_NAME, USD_LIBOR_1M, USD_LIBOR_2M)
           .addForwardCurve(OVERNIGHT_NAME, EUR_EONIA)
           .build();
   assertThrowsIllegalArg(
       () -> CurveGroup.ofCurves(definition, DISCOUNT_CURVE, IBOR_CURVE),
       "No curve found named 'Overnight' when building curve group 'group'");
 }
Example #2
0
 public void test_ofCurves() {
   CurveGroupDefinition definition =
       CurveGroupDefinition.builder()
           .name(CurveGroupName.of("group"))
           .addCurve(DISCOUNT_NAME, GBP, GBP_LIBOR_1M)
           .addForwardCurve(IBOR_NAME, USD_LIBOR_1M, USD_LIBOR_2M)
           .addForwardCurve(OVERNIGHT_NAME, EUR_EONIA)
           .build();
   CurveGroup group = CurveGroup.ofCurves(definition, DISCOUNT_CURVE, OVERNIGHT_CURVE, IBOR_CURVE);
   assertThat(group.findDiscountCurve(GBP)).hasValue(DISCOUNT_CURVE);
   assertThat(group.findForwardCurve(USD_LIBOR_1M)).hasValue(IBOR_CURVE);
   assertThat(group.findForwardCurve(USD_LIBOR_2M)).hasValue(IBOR_CURVE);
   assertThat(group.findForwardCurve(EUR_EONIA)).hasValue(OVERNIGHT_CURVE);
 }
Example #3
0
/** Test {@link CurveGroup}. */
@Test
public class CurveGroupTest {

  private static final CurveGroupName NAME = CurveGroupName.of("TestGroup");
  private static final CurveGroupName NAME2 = CurveGroupName.of("TestGroup2");
  private static final CurveName DISCOUNT_NAME = CurveName.of("Discount");
  private static final CurveName IBOR_NAME = CurveName.of("Ibor");
  private static final CurveName OVERNIGHT_NAME = CurveName.of("Overnight");
  private static final Curve DISCOUNT_CURVE = ConstantNodalCurve.of("Discount", 0.99);
  private static final Map<Currency, Curve> DISCOUNT_CURVES = ImmutableMap.of(GBP, DISCOUNT_CURVE);
  private static final Curve IBOR_CURVE = ConstantNodalCurve.of("Ibor", 0.5);
  private static final Curve OVERNIGHT_CURVE = ConstantNodalCurve.of("Overnight", 0.6);
  private static final Map<Index, Curve> IBOR_CURVES = ImmutableMap.of(GBP_LIBOR_3M, IBOR_CURVE);

  // -------------------------------------------------------------------------
  public void test_of() {
    CurveGroup test = CurveGroup.of(NAME, DISCOUNT_CURVES, IBOR_CURVES);
    assertThat(test.getName()).isEqualTo(NAME);
    assertThat(test.getDiscountCurves()).isEqualTo(DISCOUNT_CURVES);
    assertThat(test.getForwardCurves()).isEqualTo(IBOR_CURVES);
    assertThat(test.findDiscountCurve(GBP)).hasValue(DISCOUNT_CURVE);
    assertThat(test.findDiscountCurve(USD)).isEmpty();
    assertThat(test.findForwardCurve(GBP_LIBOR_3M)).hasValue(IBOR_CURVE);
    assertThat(test.findForwardCurve(CHF_LIBOR_3M)).isEmpty();
  }

  public void test_builder() {
    CurveGroup test =
        CurveGroup.builder()
            .name(NAME)
            .discountCurves(DISCOUNT_CURVES)
            .forwardCurves(IBOR_CURVES)
            .build();
    assertThat(test.getName()).isEqualTo(NAME);
    assertThat(test.getDiscountCurves()).isEqualTo(DISCOUNT_CURVES);
    assertThat(test.getForwardCurves()).isEqualTo(IBOR_CURVES);
    assertThat(test.findDiscountCurve(GBP)).hasValue(DISCOUNT_CURVE);
    assertThat(test.findDiscountCurve(USD)).isEmpty();
    assertThat(test.findForwardCurve(GBP_LIBOR_3M)).hasValue(IBOR_CURVE);
    assertThat(test.findForwardCurve(CHF_LIBOR_3M)).isEmpty();
  }

  public void test_ofCurves() {
    CurveGroupDefinition definition =
        CurveGroupDefinition.builder()
            .name(CurveGroupName.of("group"))
            .addCurve(DISCOUNT_NAME, GBP, GBP_LIBOR_1M)
            .addForwardCurve(IBOR_NAME, USD_LIBOR_1M, USD_LIBOR_2M)
            .addForwardCurve(OVERNIGHT_NAME, EUR_EONIA)
            .build();
    CurveGroup group = CurveGroup.ofCurves(definition, DISCOUNT_CURVE, OVERNIGHT_CURVE, IBOR_CURVE);
    assertThat(group.findDiscountCurve(GBP)).hasValue(DISCOUNT_CURVE);
    assertThat(group.findForwardCurve(USD_LIBOR_1M)).hasValue(IBOR_CURVE);
    assertThat(group.findForwardCurve(USD_LIBOR_2M)).hasValue(IBOR_CURVE);
    assertThat(group.findForwardCurve(EUR_EONIA)).hasValue(OVERNIGHT_CURVE);
  }

  public void test_ofCurves_missingCurve() {
    CurveGroupDefinition definition =
        CurveGroupDefinition.builder()
            .name(CurveGroupName.of("group"))
            .addCurve(DISCOUNT_NAME, GBP, GBP_LIBOR_1M)
            .addForwardCurve(IBOR_NAME, USD_LIBOR_1M, USD_LIBOR_2M)
            .addForwardCurve(OVERNIGHT_NAME, EUR_EONIA)
            .build();
    assertThrowsIllegalArg(
        () -> CurveGroup.ofCurves(definition, DISCOUNT_CURVE, IBOR_CURVE),
        "No curve found named 'Overnight' when building curve group 'group'");
  }

  // -------------------------------------------------------------------------
  public void coverage() {
    CurveGroup test = CurveGroup.of(NAME, DISCOUNT_CURVES, IBOR_CURVES);
    coverImmutableBean(test);
    CurveGroup test2 = CurveGroup.of(NAME2, ImmutableMap.of(), ImmutableMap.of());
    coverBeanEquals(test, test2);
  }

  public void test_serialization() {
    CurveGroup test = CurveGroup.of(NAME, DISCOUNT_CURVES, IBOR_CURVES);
    assertSerialization(test);
  }
}