/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.fudgemsg;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import org.testng.annotations.Test;
import com.opengamma.engine.ComputationTargetSpecification;
import com.opengamma.engine.depgraph.DependencyNodeFunction;
import com.opengamma.engine.depgraph.ambiguity.FullRequirementResolution;
import com.opengamma.engine.depgraph.ambiguity.RequirementResolution;
import com.opengamma.engine.depgraph.impl.DependencyNodeFunctionImpl;
import com.opengamma.engine.function.EmptyFunctionParameters;
import com.opengamma.engine.function.SimpleFunctionParameters;
import com.opengamma.engine.value.ValueProperties;
import com.opengamma.engine.value.ValuePropertyNames;
import com.opengamma.engine.value.ValueRequirement;
import com.opengamma.engine.value.ValueSpecification;
import com.opengamma.util.test.AbstractFudgeBuilderTestCase;
import com.opengamma.util.test.TestGroup;
/**
* Tests the {@link RequirementResolutionFudgeBuilder} class.
*/
@Test(groups = TestGroup.UNIT)
public class RequirementResolutionFudgeBuilderTest extends AbstractFudgeBuilderTestCase {
private ValueSpecification valueSpecification() {
return new ValueSpecification("Foo", ComputationTargetSpecification.NULL, ValueProperties.with(ValuePropertyNames.FUNCTION, "Test").get());
}
private DependencyNodeFunction functionNoParameters() {
return DependencyNodeFunctionImpl.of("Test", EmptyFunctionParameters.INSTANCE);
}
private DependencyNodeFunction functionWithParameters() {
return DependencyNodeFunctionImpl.of("Test", new SimpleFunctionParameters());
}
private ValueRequirement requirement(final String name) {
return new ValueRequirement(name, ComputationTargetSpecification.NULL);
}
public void testNoInputs() {
final RequirementResolution resolution = new RequirementResolution(valueSpecification(), functionNoParameters(), Collections.<FullRequirementResolution>emptySet());
assertEncodeDecodeCycle(RequirementResolution.class, resolution);
}
public void testInputs() {
final Collection<FullRequirementResolution> inputs = new ArrayList<FullRequirementResolution>();
inputs.add(new FullRequirementResolution(requirement("A")));
inputs.add(new FullRequirementResolution(requirement("B")));
final RequirementResolution resolution = new RequirementResolution(valueSpecification(), functionNoParameters(), inputs);
assertEncodeDecodeCycle(RequirementResolution.class, resolution);
}
public void testFunctionParameters() {
final RequirementResolution resolution = new RequirementResolution(valueSpecification(), functionWithParameters(), Collections.<FullRequirementResolution>emptySet());
assertEncodeDecodeCycle(RequirementResolution.class, resolution);
}
}