final ComputationTarget target1 = new ComputationTarget(ComputationTargetType.of(SimplePosition.class), mock(SimplePosition.class));
final ComputationTarget target2 = new ComputationTarget(ComputationTargetType.of(SimpleTrade.class), mock(SimpleTrade.class));
final ParameterizedFunction pfn1 = function(new TestPositionFunction(), "1");
final ParameterizedFunction pfn2 = function(new TestTradeFunction(), "2");
final ParameterizedFunction pfn3 = function(new TestPositionOrTradeFunction(), "3");
final FunctionCompilationContext context = new FunctionCompilationContext();
final ComputationTargetResolver.AtVersionCorrection targetResolver = Mockito.mock(ComputationTargetResolver.AtVersionCorrection.class);
Mockito.when(targetResolver.resolve(target1.toSpecification())).thenReturn(target1);
Mockito.when(targetResolver.resolve(target2.toSpecification())).thenReturn(target2);
context.setComputationTargetResolver(targetResolver);
final DefaultCompiledFunctionResolver resolver = new DefaultCompiledFunctionResolver(context);
resolver.addRule(new ResolutionRule(pfn1, ApplyToAllTargets.INSTANCE, 1));
resolver.addRule(new ResolutionRule(pfn2, ApplyToAllTargets.INSTANCE, 1));
resolver.addRule(new ResolutionRule(pfn3, ApplyToAllTargets.INSTANCE, 2));
resolver.compileRules();