/**
* Copyright (C) 2016 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.strata.calc;
import static com.opengamma.strata.basics.currency.Currency.USD;
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 org.testng.Assert.assertEquals;
import java.util.Optional;
import org.testng.annotations.Test;
import com.opengamma.strata.calc.runner.CalculationParameter;
import com.opengamma.strata.calc.runner.CalculationParameters;
import com.opengamma.strata.calc.runner.TestParameter;
/**
* Test {@link Column}.
*/
@Test
public class ColumnTest {
private static final CalculationParameter PARAM = new TestParameter();
//-------------------------------------------------------------------------
public void test_builder_columnNameFromMeasure() {
Column test = Column.builder().measure(TestingMeasures.PRESENT_VALUE).build();
assertEquals(test.getName(), ColumnName.of(TestingMeasures.PRESENT_VALUE.getName()));
assertEquals(test.getMeasure(), TestingMeasures.PRESENT_VALUE);
assertEquals(test.getReportingCurrency(), Optional.empty());
assertEquals(test.getParameters(), CalculationParameters.empty());
}
public void test_builder_columnNameSpecified() {
Column test = Column.builder()
.measure(TestingMeasures.PRESENT_VALUE)
.name(ColumnName.of("NPV"))
.reportingCurrency(ReportingCurrency.NATURAL)
.build();
assertEquals(test.getName(), ColumnName.of("NPV"));
assertEquals(test.getMeasure(), TestingMeasures.PRESENT_VALUE);
assertEquals(test.getReportingCurrency(), Optional.of(ReportingCurrency.NATURAL));
assertEquals(test.getParameters(), CalculationParameters.empty());
}
public void test_builder_missingData() {
assertThrowsIllegalArg(() -> Column.builder().build());
}
//-------------------------------------------------------------------------
public void test_of_Measure() {
Column test = Column.of(TestingMeasures.PRESENT_VALUE);
assertEquals(test.getName(), ColumnName.of(TestingMeasures.PRESENT_VALUE.getName()));
assertEquals(test.getMeasure(), TestingMeasures.PRESENT_VALUE);
assertEquals(test.getReportingCurrency(), Optional.empty());
assertEquals(test.getParameters(), CalculationParameters.empty());
}
public void test_of_MeasureCurrency() {
Column test = Column.of(TestingMeasures.PRESENT_VALUE, USD);
assertEquals(test.getName(), ColumnName.of(TestingMeasures.PRESENT_VALUE.getName()));
assertEquals(test.getMeasure(), TestingMeasures.PRESENT_VALUE);
assertEquals(test.getReportingCurrency(), Optional.of(ReportingCurrency.of(USD)));
assertEquals(test.getParameters(), CalculationParameters.empty());
}
public void test_of_MeasureCalculationParameters() {
Column test = Column.of(TestingMeasures.PRESENT_VALUE, PARAM);
assertEquals(test.getName(), ColumnName.of(TestingMeasures.PRESENT_VALUE.getName()));
assertEquals(test.getMeasure(), TestingMeasures.PRESENT_VALUE);
assertEquals(test.getReportingCurrency(), Optional.empty());
assertEquals(test.getParameters(), CalculationParameters.of(PARAM));
}
public void test_of_MeasureCurrencyCalculationParameters() {
Column test = Column.of(TestingMeasures.PRESENT_VALUE, USD, PARAM);
assertEquals(test.getName(), ColumnName.of(TestingMeasures.PRESENT_VALUE.getName()));
assertEquals(test.getMeasure(), TestingMeasures.PRESENT_VALUE);
assertEquals(test.getReportingCurrency(), Optional.of(ReportingCurrency.of(USD)));
assertEquals(test.getParameters(), CalculationParameters.of(PARAM));
}
public void test_of_MeasureString() {
Column test = Column.of(TestingMeasures.PRESENT_VALUE, "NPV");
assertEquals(test.getName(), ColumnName.of("NPV"));
assertEquals(test.getMeasure(), TestingMeasures.PRESENT_VALUE);
assertEquals(test.getReportingCurrency(), Optional.empty());
assertEquals(test.getParameters(), CalculationParameters.empty());
}
public void test_of_MeasureStringCurrency() {
Column test = Column.of(TestingMeasures.PRESENT_VALUE, "NPV", USD);
assertEquals(test.getName(), ColumnName.of("NPV"));
assertEquals(test.getMeasure(), TestingMeasures.PRESENT_VALUE);
assertEquals(test.getReportingCurrency(), Optional.of(ReportingCurrency.of(USD)));
assertEquals(test.getParameters(), CalculationParameters.empty());
}
public void test_of_MeasureStringCalculationParameters() {
Column test = Column.of(TestingMeasures.PRESENT_VALUE, "NPV", PARAM);
assertEquals(test.getName(), ColumnName.of("NPV"));
assertEquals(test.getMeasure(), TestingMeasures.PRESENT_VALUE);
assertEquals(test.getReportingCurrency(), Optional.empty());
assertEquals(test.getParameters(), CalculationParameters.of(PARAM));
}
public void test_of_MeasureStringCurrencyCalculationParameters() {
Column test = Column.of(TestingMeasures.PRESENT_VALUE, "NPV", USD, PARAM);
assertEquals(test.getName(), ColumnName.of("NPV"));
assertEquals(test.getMeasure(), TestingMeasures.PRESENT_VALUE);
assertEquals(test.getReportingCurrency(), Optional.of(ReportingCurrency.of(USD)));
assertEquals(test.getParameters(), CalculationParameters.of(PARAM));
}
//-------------------------------------------------------------------------
public void test_toHeader_withCurrency() {
ColumnHeader test = Column.of(TestingMeasures.PRESENT_VALUE, "NPV", USD).toHeader();
assertEquals(test.getName(), ColumnName.of("NPV"));
assertEquals(test.getMeasure(), TestingMeasures.PRESENT_VALUE);
assertEquals(test.getCurrency(), Optional.of(USD));
}
public void test_toHeader_withoutCurrency() {
ColumnHeader test = Column.of(TestingMeasures.PRESENT_VALUE, "NPV").toHeader();
assertEquals(test.getName(), ColumnName.of("NPV"));
assertEquals(test.getMeasure(), TestingMeasures.PRESENT_VALUE);
assertEquals(test.getCurrency(), Optional.empty());
}
public void test_toHeader_withNonConvertibleMeasure() {
ColumnHeader test = Column.of(TestingMeasures.PAR_RATE, "NPV", USD).toHeader();
assertEquals(test.getName(), ColumnName.of("NPV"));
assertEquals(test.getMeasure(), TestingMeasures.PAR_RATE);
assertEquals(test.getCurrency(), Optional.empty());
}
//-------------------------------------------------------------------------
public void coverage() {
Column test = Column.of(TestingMeasures.PRESENT_VALUE, "NPV", USD, PARAM);
coverImmutableBean(test);
Column test2 = Column.of(TestingMeasures.CASH_FLOWS);
coverBeanEquals(test, test2);
}
}