/**
* Copyright (C) 2015 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.strata.report.framework.expression;
import static com.opengamma.strata.collect.CollectProjectAssertions.assertThat;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.Set;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.opengamma.strata.basics.currency.Currency;
import com.opengamma.strata.calc.runner.CalculationFunctions;
import com.opengamma.strata.collect.array.DoubleArray;
import com.opengamma.strata.market.curve.CurveName;
import com.opengamma.strata.market.param.CurrencyParameterSensitivities;
import com.opengamma.strata.market.param.CurrencyParameterSensitivity;
import com.opengamma.strata.measure.StandardComponents;
/**
* Test {@link CurrencyParameterSensitivitiesTokenEvaluator}.
*/
@Test
public class CurrencyParameterSensitivitiesTokenEvaluatorTest {
private static final CalculationFunctions FUNCTIONS = StandardComponents.calculationFunctions();
public void tokens() {
CurrencyParameterSensitivity sensitivity1 =
CurrencyParameterSensitivity.of(CurveName.of("curve1"), Currency.AUD, DoubleArray.EMPTY);
CurrencyParameterSensitivity sensitivity2 =
CurrencyParameterSensitivity.of(CurveName.of("curve2"), Currency.CHF, DoubleArray.EMPTY);
CurrencyParameterSensitivities sensitivities = CurrencyParameterSensitivities.of(sensitivity1, sensitivity2);
Set<String> expected = ImmutableSet.of("curve1", "curve2", "aud", "chf");
CurrencyParameterSensitivitiesTokenEvaluator evaluator = new CurrencyParameterSensitivitiesTokenEvaluator();
assertThat(evaluator.tokens(sensitivities)).isEqualTo(expected);
}
public void evaluate() {
CurrencyParameterSensitivity sensitivity1 =
CurrencyParameterSensitivity.of(CurveName.of("curve1"), Currency.AUD, DoubleArray.EMPTY);
CurrencyParameterSensitivity sensitivity2 =
CurrencyParameterSensitivity.of(CurveName.of("curve2"), Currency.CHF, DoubleArray.EMPTY);
CurrencyParameterSensitivity sensitivity3 =
CurrencyParameterSensitivity.of(CurveName.of("curve2"), Currency.AUD, DoubleArray.EMPTY);
CurrencyParameterSensitivities sensitivities =
CurrencyParameterSensitivities.of(sensitivity1, sensitivity2, sensitivity3);
CurrencyParameterSensitivitiesTokenEvaluator evaluator = new CurrencyParameterSensitivitiesTokenEvaluator();
CurrencyParameterSensitivities expected1 = CurrencyParameterSensitivities.of(sensitivity1, sensitivity3);
EvaluationResult result1 = evaluator.evaluate(sensitivities, FUNCTIONS, "aud", ImmutableList.of());
assertThat(result1.getResult()).isSuccess();
CurrencyParameterSensitivities result1Value = (CurrencyParameterSensitivities) result1.getResult().getValue();
assertThat(result1Value.getSensitivities()).containsAll(expected1.getSensitivities());
CurrencyParameterSensitivities expected2 = CurrencyParameterSensitivities.of(sensitivity2, sensitivity3);
EvaluationResult result2 = evaluator.evaluate(sensitivities, FUNCTIONS, "curve2", ImmutableList.of());
assertThat(result2.getResult()).isSuccess();
CurrencyParameterSensitivities result2Value = (CurrencyParameterSensitivities) result2.getResult().getValue();
assertThat(result2Value.getSensitivities()).containsAll(expected2.getSensitivities());
EvaluationResult result3 = evaluator.evaluate(sensitivities, FUNCTIONS, "chf", ImmutableList.of());
assertThat(result3.getResult()).hasValue(sensitivity2);
EvaluationResult result4 = evaluator.evaluate(sensitivities, FUNCTIONS, "usd", ImmutableList.of());
assertThat(result4.getResult()).isFailure();
}
}