/** * Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.sesame.function.scenarios; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertSame; import static org.testng.AssertJUnit.assertTrue; import java.util.List; import javax.annotation.Nullable; import org.testng.annotations.Test; import com.google.common.collect.ImmutableSet; import com.opengamma.util.test.TestGroup; @Test(groups = TestGroup.UNIT) public class FilteredScenarioDefinitionTest { @Test public void forFunction() { Arg1 arg1 = new Arg1(); Arg2 arg2 = new Arg2(); FilteredScenarioDefinition args = new FilteredScenarioDefinition(arg1, arg2); List<Arg1> args1 = args.getArguments(new Function1()); assertEquals(1, args1.size()); assertSame(arg1, args1.get(0)); List<Arg2> args2 = args.getArguments(new Function2()); assertEquals(1, args2.size()); assertSame(arg2, args2.get(0)); FilteredScenarioDefinition filteredArgs = args.forFunctions(ImmutableSet.<Class<?>>of(Function1.class)); List<Arg1> filteredArgs1 = filteredArgs.getArguments(new Function1()); assertEquals(1, filteredArgs1.size()); assertSame(arg1, filteredArgs1.get(0)); List<Arg2> filteredArgs2 = filteredArgs.getArguments(new Function2()); assertTrue(filteredArgs2.isEmpty()); } public class Function1 implements ScenarioFunction<Arg1, Function1> { @Nullable @Override public Class<Arg1> getArgumentType() { return Arg1.class; } } public class Function2 implements ScenarioFunction<Arg2, Function2> { @Nullable @Override public Class<Arg2> getArgumentType() { return Arg2.class; } } public static final class Arg1 implements ScenarioArgument<Arg1, Function1> { @Override public Class<Function1> getFunctionType() { return Function1.class; } } public static final class Arg2 implements ScenarioArgument<Arg2, Function2> { @Override public Class<Function2> getFunctionType() { return Function2.class; } } }