/** * Copyright (C) 2016 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.measure.calc; 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.google.common.collect.ImmutableMap; import com.opengamma.strata.basics.CalculationTarget; import com.opengamma.strata.calc.TestingMeasures; import com.opengamma.strata.calc.runner.CalculationParameter; import com.opengamma.strata.calc.runner.TestParameter; import com.opengamma.strata.calc.runner.TestParameter2; /** * Test {@link TargetTypeCalculationParameter}. */ @Test public class TargetTypeCalculationParameterTest { private static final CalculationParameter PARAM1 = new TestParameter(); private static final CalculationParameter PARAM2 = new TestParameter(); private static final CalculationParameter PARAM3 = new TestParameter(); private static final CalculationParameter PARAM_OTHER = new TestParameter2(); private static final TestTarget TARGET1 = new TestTarget(); private static final TestTarget2 TARGET2 = new TestTarget2(); private static final TestTarget3 TARGET3 = new TestTarget3(); //------------------------------------------------------------------------- public void test_of() { TargetTypeCalculationParameter test = TargetTypeCalculationParameter.of( ImmutableMap.of(TestTarget.class, PARAM1, TestTarget2.class, PARAM2), PARAM3); assertEquals(test.getQueryType(), TestParameter.class); assertEquals(test.getParameters().size(), 2); assertEquals(test.getDefaultParameter(), PARAM3); assertEquals(test.queryType(), TestParameter.class); assertEquals(test.filter(TARGET1, TestingMeasures.PRESENT_VALUE), Optional.of(PARAM1)); assertEquals(test.filter(TARGET2, TestingMeasures.PRESENT_VALUE), Optional.of(PARAM2)); assertEquals(test.filter(TARGET3, TestingMeasures.PRESENT_VALUE), Optional.of(PARAM3)); } public void of_empty() { assertThrowsIllegalArg(() -> TargetTypeCalculationParameter.of(ImmutableMap.of(), PARAM3)); } public void of_badType() { assertThrowsIllegalArg(() -> TargetTypeCalculationParameter.of(ImmutableMap.of(TestTarget.class, PARAM_OTHER), PARAM3)); } //------------------------------------------------------------------------- public void coverage() { TargetTypeCalculationParameter test = TargetTypeCalculationParameter.of( ImmutableMap.of(TestTarget.class, PARAM1, TestTarget2.class, PARAM2), PARAM3); coverImmutableBean(test); TargetTypeCalculationParameter test2 = TargetTypeCalculationParameter.of( ImmutableMap.of(TestTarget.class, PARAM1), PARAM2); coverBeanEquals(test, test2); } //------------------------------------------------------------------------- private static class TestTarget implements CalculationTarget { } private static class TestTarget2 implements CalculationTarget { } private static class TestTarget3 implements CalculationTarget { } }