/**
* Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.strata.basics.index;
import static com.opengamma.strata.basics.currency.Currency.GBP;
import static com.opengamma.strata.basics.location.Country.GB;
import static com.opengamma.strata.collect.TestHelper.assertJodaConvert;
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.coverPrivateConstructor;
import static org.testng.Assert.assertEquals;
import org.joda.beans.ImmutableBean;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableMap;
import com.opengamma.strata.basics.currency.Currency;
import com.opengamma.strata.basics.location.Country;
import com.opengamma.strata.basics.schedule.Frequency;
/**
* Test {@link PriceIndex}.
*/
@Test
public class PriceIndexTest {
public void test_gbpHicp() {
PriceIndex test = PriceIndex.of("GB-HICP");
assertEquals(test.getName(), "GB-HICP");
assertEquals(test.getCurrency(), GBP);
assertEquals(test.getRegion(), GB);
assertEquals(test.isActive(), true);
assertEquals(test.getPublicationFrequency(), Frequency.P1M);
assertEquals(test.getFloatingRateName(), FloatingRateName.of("GB-HICP"));
assertEquals(test.toString(), "GB-HICP");
}
public void test_getFloatingRateName() {
for (PriceIndex index : PriceIndex.extendedEnum().lookupAll().values()) {
assertEquals(index.getFloatingRateName(), FloatingRateName.of(index.getName()));
}
}
//-------------------------------------------------------------------------
@DataProvider(name = "name")
static Object[][] data_name() {
return new Object[][] {
{PriceIndices.GB_HICP, "GB-HICP"},
{PriceIndices.GB_RPI, "GB-RPI"},
{PriceIndices.GB_RPIX, "GB-RPIX"},
{PriceIndices.CH_CPI, "CH-CPI"},
{PriceIndices.EU_AI_CPI, "EU-AI-CPI"},
{PriceIndices.EU_EXT_CPI, "EU-EXT-CPI"},
{PriceIndices.JP_CPI_EXF, "JP-CPI-EXF"},
{PriceIndices.US_CPI_U, "US-CPI-U"},
{PriceIndices.FR_EXT_CPI, "FR-EXT-CPI"},
};
}
@Test(dataProvider = "name")
public void test_name(PriceIndex convention, String name) {
assertEquals(convention.getName(), name);
}
@Test(dataProvider = "name")
public void test_toString(PriceIndex convention, String name) {
assertEquals(convention.toString(), name);
}
@Test(dataProvider = "name")
public void test_of_lookup(PriceIndex convention, String name) {
assertEquals(PriceIndex.of(name), convention);
}
@Test(dataProvider = "name")
public void test_extendedEnum(PriceIndex convention, String name) {
ImmutableMap<String, PriceIndex> map = PriceIndex.extendedEnum().lookupAll();
assertEquals(map.get(name), convention);
}
public void test_of_lookup_notFound() {
assertThrowsIllegalArg(() -> PriceIndex.of("Rubbish"));
}
public void test_of_lookup_null() {
assertThrowsIllegalArg(() -> PriceIndex.of(null));
}
//-------------------------------------------------------------------------
public void coverage() {
coverPrivateConstructor(PriceIndices.class);
coverImmutableBean((ImmutableBean) PriceIndices.US_CPI_U);
coverBeanEquals((ImmutableBean) PriceIndices.US_CPI_U, ImmutablePriceIndex.builder()
.name("Test")
.region(Country.AR)
.currency(Currency.ARS)
.publicationFrequency(Frequency.P6M)
.build());
}
public void test_jodaConvert() {
assertJodaConvert(PriceIndex.class, PriceIndices.US_CPI_U);
}
public void test_serialization() {
assertSerialization(PriceIndices.US_CPI_U);
}
}