/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.engine.cache; import static org.testng.Assert.assertEquals; import org.testng.annotations.Test; import com.opengamma.engine.ComputationTargetSpecification; import com.opengamma.engine.target.ComputationTargetRequirement; import com.opengamma.engine.target.ComputationTargetType; import com.opengamma.engine.value.ValueProperties; import com.opengamma.engine.value.ValuePropertyNames; import com.opengamma.engine.value.ValueSpecification; import com.opengamma.id.ExternalId; import com.opengamma.id.ExternalIdBundle; import com.opengamma.id.UniqueId; import com.opengamma.util.test.TestGroup; /** * Tests the {@link ValueSpecificationStringEncoder} class */ @Test(groups = TestGroup.UNIT) public class ValueSpecificationStringEncoderTest { public void testBasic() { final ValueSpecification spec = new ValueSpecification("Value1", new ComputationTargetSpecification(ComputationTargetType.SECURITY, UniqueId.of("Sec", "A", "V1")), ValueProperties.with( ValuePropertyNames.FUNCTION, "Test").get()); final String str = ValueSpecificationStringEncoder.encodeAsString(spec); assertEquals(str, "Value1,{Function=[Test]},(Sec~A~V1,com.opengamma.core.security.Security)"); } public void testNullType() { final ValueSpecification spec = new ValueSpecification("Value2", ComputationTargetSpecification.NULL, ValueProperties.with(ValuePropertyNames.FUNCTION, "Test").get()); final String str = ValueSpecificationStringEncoder.encodeAsString(spec); assertEquals(str, "Value2,{Function=[Test]},(NULL,NULL)"); } public void testMultipleTypes() { final ValueSpecification spec = new ValueSpecification("Value3", new ComputationTargetSpecification(ComputationTargetType.SECURITY.or(ComputationTargetType.POSITION), UniqueId.of("Obj", "A", "V1")), ValueProperties.with(ValuePropertyNames.FUNCTION, "Test") .get()); final String str = ValueSpecificationStringEncoder.encodeAsString(spec); assertEquals(str, "Value3,{Function=[Test]},(Obj~A~V1,{com.opengamma.core.position.Position,com.opengamma.core.security.Security})"); } public void testNestedTypes() { final ComputationTargetSpecification a = new ComputationTargetSpecification(ComputationTargetType.POSITION, UniqueId.of("Pos", "12")); final ComputationTargetRequirement b = a.containing(ComputationTargetType.SECURITY, ExternalIdBundle.of(ExternalId.of("B", "2"), ExternalId.of("A", "1"))); final ComputationTargetSpecification c = b.containing(ComputationTargetType.PRIMITIVE, UniqueId.of("Foo", "Bar")); final ValueSpecification spec = new ValueSpecification("Value4", c, ValueProperties.with(ValuePropertyNames.FUNCTION, "Test").get()); final String str = ValueSpecificationStringEncoder.encodeAsString(spec); assertEquals(str, "Value4,{Function=[Test]},(Pos~12,Bundle[A~1, B~2],Foo~Bar,[com.opengamma.core.position.Position,com.opengamma.core.security.Security,com.opengamma.engine.target.Primitive])"); } }