@Override public FloatingRateName normalized() { if (type.isIbor() && indexName.endsWith("-")) { return FloatingRateName.of(indexName.substring(0, indexName.length() - 1)); } return FloatingRateName.of(indexName); }
@Override public OvernightIndex toOvernightIndex() { if (!type.isOvernight()) { throw new IllegalStateException("Incorrect index type, expected Overnight: " + externalName); } if (indexName.endsWith(AVERAGE_SUFFIX)) { return OvernightIndex.of(indexName.substring(0, indexName.length() - 4)); } return OvernightIndex.of(indexName); }
@Override public PriceIndex toPriceIndex() { if (!type.isPrice()) { throw new IllegalStateException("Incorrect index type, expected Price: " + externalName); } return PriceIndex.of(indexName); }
@Test(dataProvider = "name") public void test_of_lookup(FloatingRateType convention, String name) { assertEquals(FloatingRateType.of(name), convention); }
@Test(dataProvider = "name") public void test_toString(FloatingRateType convention, String name) { assertEquals(convention.toString(), name); }
@Test(dataProvider = "name") public void test_of_lookupUpperCase(FloatingRateType convention, String name) { assertEquals(FloatingRateType.of(name.toUpperCase(Locale.ENGLISH)), convention); }
public void test_isIbor() { assertEquals(FloatingRateType.IBOR.isIbor(), true); assertEquals(FloatingRateType.OVERNIGHT_AVERAGED.isIbor(), false); assertEquals(FloatingRateType.OVERNIGHT_COMPOUNDED.isIbor(), false); assertEquals(FloatingRateType.PRICE.isIbor(), false); assertEquals(FloatingRateType.OTHER.isIbor(), false); }
public void test_isOvernight() { assertEquals(FloatingRateType.IBOR.isOvernight(), false); assertEquals(FloatingRateType.OVERNIGHT_AVERAGED.isOvernight(), true); assertEquals(FloatingRateType.OVERNIGHT_COMPOUNDED.isOvernight(), true); assertEquals(FloatingRateType.PRICE.isOvernight(), false); assertEquals(FloatingRateType.OTHER.isOvernight(), false); }
public void test_isPrice() { assertEquals(FloatingRateType.IBOR.isPrice(), false); assertEquals(FloatingRateType.OVERNIGHT_AVERAGED.isPrice(), false); assertEquals(FloatingRateType.OVERNIGHT_COMPOUNDED.isPrice(), false); assertEquals(FloatingRateType.PRICE.isPrice(), true); assertEquals(FloatingRateType.OTHER.isPrice(), false); }
@Test(dataProvider = "name") public void test_of_lookupLowerCase(FloatingRateType convention, String name) { assertEquals(FloatingRateType.of(name.toLowerCase(Locale.ENGLISH)), convention); }
@Override public Set<Tenor> getTenors() { if (!type.isIbor()) { return ImmutableSet.of(); } return IborIndex.extendedEnum().lookupAll().values().stream() .filter(index -> index.getName().startsWith(indexName)) .filter(index -> index.isActive()) .map(index -> index.getTenor()) .sorted() .collect(toImmutableSet()); }
public void test_of_lookup_null() { assertThrowsIllegalArg(() -> FloatingRateType.of(null)); }
@Override public IborIndex toIborIndex(Tenor tenor) { if (!type.isIbor()) { throw new IllegalStateException("Incorrect index type, expected Ibor: " + externalName); } return IborIndex.of(indexName + tenor.normalized().toString()); }
public void test_of_lookup_notFound() { assertThrowsIllegalArg(() -> FloatingRateType.of("Rubbish")); }