/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.view;
import static org.testng.AssertJUnit.assertFalse;
import static org.testng.AssertJUnit.assertTrue;
import org.testng.annotations.Test;
import com.opengamma.engine.ComputationTargetSpecification;
import com.opengamma.engine.value.ComputedValue;
import com.opengamma.engine.value.ValueProperties;
import com.opengamma.engine.value.ValuePropertyNames;
import com.opengamma.engine.value.ValueSpecification;
import com.opengamma.id.UniqueId;
import com.opengamma.util.test.TestGroup;
/**
* Test DeltaDefinition.
*/
@Test(groups = TestGroup.UNIT)
public class DeltaDefinitionTest {
public void testEmptyDefinition() {
DeltaDefinition dd = new DeltaDefinition();
doBasicTests(dd);
}
public void testWithCustomNumberComparer() {
DeltaDefinition dd = new DeltaDefinition();
dd.setNumberComparer(new NumberDeltaComparer(3));
doBasicTests(dd);
// Just check that the comparer is being used - its own tests check that it actually works
assertFalse(dd.isDelta(createComputedValue(123.1234567), createComputedValue(123.1239999)));
assertTrue(dd.isDelta(createComputedValue(123.1234567), createComputedValue(123.12555555)));
}
private void doBasicTests(DeltaDefinition dd) {
assertFalse(dd.isDelta(null, null));
assertFalse(dd.isDelta(createComputedValue("abc"), createComputedValue("abc")));
assertFalse(dd.isDelta(createComputedValue(123.0), createComputedValue(123.0)));
assertTrue(dd.isDelta(createComputedValue(123.0), createComputedValue(123.1)));
// Different specifications only should indicate a delta
assertTrue(dd.isDelta(createComputedValue("test1", 123), createComputedValue("test2", 123)));
}
private ComputedValue createComputedValue(Object value) {
return createComputedValue("test", value);
}
private ComputedValue createComputedValue(String valueName, Object value) {
return new ComputedValue(createValueSpecification(valueName), value);
}
private ValueSpecification createValueSpecification(String valueName) {
return new ValueSpecification(valueName, ComputationTargetSpecification.of(UniqueId.of("foo", "bar")), ValueProperties.with(ValuePropertyNames.FUNCTION, "mockFunctionId").get());
}
}