/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.depgraph.rest;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.threeten.bp.Instant;
import org.threeten.bp.ZonedDateTime;
import com.google.common.collect.Lists;
import com.opengamma.engine.ComputationTargetSpecification;
import com.opengamma.engine.marketdata.spec.MarketData;
import com.opengamma.engine.marketdata.spec.MarketDataSpecification;
import com.opengamma.engine.marketdata.spec.UserMarketDataSpecification;
import com.opengamma.engine.target.ComputationTargetRequirement;
import com.opengamma.engine.target.ComputationTargetType;
import com.opengamma.engine.value.ValueProperties;
import com.opengamma.engine.value.ValueRequirement;
import com.opengamma.id.ExternalId;
import com.opengamma.id.UniqueId;
import com.opengamma.id.VersionCorrection;
import com.opengamma.util.test.TestGroup;
/**
* Test.
*/
@Test(groups = TestGroup.UNIT)
public class DependencyGraphTraceBuilderPropertiesTest {
@BeforeMethod
public void beforeMethod() {
}
private DependencyGraphTraceBuilderProperties createBuilder() {
return new DependencyGraphTraceBuilderProperties();
}
@Test
public void valuationTime() {
final DependencyGraphTraceBuilderProperties builder = createBuilder();
final Instant i1 = builder.getValuationTime();
Instant instant = ZonedDateTime.parse("2007-12-03T10:15:30+01:00[Europe/Paris]").toInstant();
final DependencyGraphTraceBuilderProperties prime = builder.valuationTime(instant);
final Instant i2 = prime.getValuationTime();
assertEquals(i1, builder.getValuationTime()); // original unchanged
assertFalse(Objects.equals(i1, i2));
}
@Test
public void calculationConfigurationName() {
final DependencyGraphTraceBuilderProperties builder = createBuilder();
final String c1 = builder.getCalculationConfigurationName();
final DependencyGraphTraceBuilderProperties prime = builder.calculationConfigurationName("Foo");
final String c2 = prime.getCalculationConfigurationName();
assertEquals(c1, builder.getCalculationConfigurationName()); // original unchanged
assertFalse(c1.equals(c2));
}
@Test
public void defaultProperties() {
ValueProperties valueProperties = ValueProperties.parse("A=[foo,bar],B=*");
final DependencyGraphTraceBuilderProperties builder = createBuilder();
final ValueProperties p1 = builder.getDefaultProperties();
final DependencyGraphTraceBuilderProperties prime = builder.defaultProperties(valueProperties);
final ValueProperties p2 = prime.getDefaultProperties();
assertEquals(p1, builder.getDefaultProperties()); // original unchanged
assertFalse(p1.equals(p2));
}
@Test
public void addRequirement() {
final ComputationTargetSpecification target = ComputationTargetSpecification.of(UniqueId.of("Scheme", "PrimitiveValue"));
final ValueRequirement vr1 = new ValueRequirement("Value1", target);
final ValueRequirement vr2 = new ValueRequirement("Value2", target);
final DependencyGraphTraceBuilderProperties builder = createBuilder();
final Collection<ValueRequirement> r1 = builder.getRequirements();
final DependencyGraphTraceBuilderProperties prime = builder.addRequirement(vr1);
final Collection<ValueRequirement> r2 = prime.getRequirements();
final DependencyGraphTraceBuilderProperties prime2 = prime.addRequirement(vr2);
final Collection<ValueRequirement> r3 = prime2.getRequirements();
assertEquals(r1, builder.getRequirements()); // original unchanged
assertEquals(r2, prime.getRequirements()); // unchanged
assertEquals(r1.size(), 0);
assertEquals(r2.size(), 1);
assertEquals(r3.size(), 2);
}
@Test
public void marketData() {
String snapshotId = "Foo~1";
List<MarketDataSpecification> marketData = Lists.<MarketDataSpecification>newArrayList(MarketData.user(UniqueId.parse(snapshotId)));
final DependencyGraphTraceBuilderProperties builder1 = createBuilder();
List<MarketDataSpecification> defaultMD = builder1.getMarketData();
final DependencyGraphTraceBuilderProperties builder2 = builder1.marketData(marketData);
assertEquals(defaultMD, builder1.getMarketData());
assertEquals(marketData, builder2.getMarketData());
}
@Test
public void addMarketData() {
String snapshotId = "Foo~1";
UserMarketDataSpecification marketData = MarketData.user(UniqueId.parse(snapshotId));
final DependencyGraphTraceBuilderProperties builder1 = createBuilder();
List<MarketDataSpecification> defaultMD = builder1.getMarketData();
final DependencyGraphTraceBuilderProperties builder2 = builder1.addMarketData(marketData);
assertEquals(defaultMD, builder1.getMarketData());
assertEquals(Lists.newArrayList(marketData), builder2.getMarketData());
}
@Test
public void requirements() {
Set<ValueRequirement> requirements = Collections.singleton(new ValueRequirement("testValue", new ComputationTargetRequirement(ComputationTargetType.POSITION, ExternalId.of("GOLDMAN", "FOO1"))));
final DependencyGraphTraceBuilderProperties builder1 = createBuilder();
Collection<ValueRequirement> defaultRequirements = builder1.getRequirements();
final DependencyGraphTraceBuilderProperties builder2 = builder1.requirements(requirements);
assertEquals(defaultRequirements, builder1.getRequirements());
assertEquals(requirements, builder2.getRequirements());
}
@Test
public void resolutionTime() {
String rtStr = "V1970-01-01T00:00:01Z.CLATEST";
VersionCorrection rt = VersionCorrection.parse(rtStr);
final DependencyGraphTraceBuilderProperties builder1 = createBuilder();
VersionCorrection defaultVC = builder1.getResolutionTime();
final DependencyGraphTraceBuilderProperties builder2 = builder1.resolutionTime(rt);
assertEquals(defaultVC, builder1.getResolutionTime());
assertEquals(rt, builder2.getResolutionTime());
}
}