/** * Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.engine.view.helper; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; import org.testng.annotations.Test; import com.opengamma.engine.value.ValueProperties; import com.opengamma.engine.value.ValuePropertyNames; import com.opengamma.util.test.TestGroup; /** * Tests the {@link AvailableOutput} class. */ @Test(groups = TestGroup.UNIT) public class AvailableOutputImplTest { private static final String VALUE_NAME = "Foo"; private static final String SECURITY_TYPE_1 = "Swap"; private static final String SECURITY_TYPE_2 = "Option"; private static final String FUNCTION_ID_1 = "F1"; private static final String FUNCTION_ID_2 = "F2"; private static final String PROPERTY_1 = "P1"; private static final String PROPERTY_2 = "P2"; private static final String VALUE_A = "VA"; private static final String VALUE_B = "VB"; private static final String WILDCARD = "*"; public void testAvailableOnPosition() { final AvailableOutputImpl output = new AvailableOutputImpl(VALUE_NAME, null); assertFalse(output.isAvailableOnPosition()); output.setPortfolioNodeProperties(ValueProperties.none()); assertFalse(output.isAvailableOnPosition()); output.setPositionProperties(ValueProperties.none(), SECURITY_TYPE_1); assertTrue(output.isAvailableOnPosition()); } public void testAvailableOn() { final AvailableOutputImpl output = new AvailableOutputImpl(VALUE_NAME, null); assertFalse(output.isAvailableOn(SECURITY_TYPE_1)); assertFalse(output.isAvailableOn(SECURITY_TYPE_2)); output.setPortfolioNodeProperties(ValueProperties.none()); assertFalse(output.isAvailableOn(SECURITY_TYPE_1)); assertFalse(output.isAvailableOn(SECURITY_TYPE_2)); output.setPositionProperties(ValueProperties.none(), SECURITY_TYPE_1); assertTrue(output.isAvailableOn(SECURITY_TYPE_1)); assertFalse(output.isAvailableOn(SECURITY_TYPE_2)); output.setPositionProperties(ValueProperties.none(), SECURITY_TYPE_2); assertTrue(output.isAvailableOn(SECURITY_TYPE_1)); assertTrue(output.isAvailableOn(SECURITY_TYPE_2)); } public void testAvailableOnPortfolioNode() { final AvailableOutputImpl output = new AvailableOutputImpl(VALUE_NAME, null); assertFalse(output.isAvailableOnPortfolioNode()); output.setPositionProperties(ValueProperties.none(), SECURITY_TYPE_1); assertFalse(output.isAvailableOnPortfolioNode()); output.setPortfolioNodeProperties(ValueProperties.none()); assertTrue(output.isAvailableOnPortfolioNode()); } public void testPropertiesNone() { final AvailableOutputImpl output = new AvailableOutputImpl(VALUE_NAME, null); output.setPortfolioNodeProperties(ValueProperties.none()); output.setPositionProperties(ValueProperties.none(), SECURITY_TYPE_1); assertEquals(output.getProperties(), ValueProperties.none()); assertEquals(output.getPortfolioNodeProperties(), ValueProperties.none()); assertEquals(output.getPositionProperties(SECURITY_TYPE_1), ValueProperties.none()); } public void testPropertiesAll() { final AvailableOutputImpl output = new AvailableOutputImpl(VALUE_NAME, null); output.setPortfolioNodeProperties(ValueProperties.with(ValuePropertyNames.FUNCTION, FUNCTION_ID_1).get()); output.setPositionProperties(ValueProperties.with(ValuePropertyNames.FUNCTION, FUNCTION_ID_2).get(), SECURITY_TYPE_1); output.setPositionProperties(ValueProperties.all(), SECURITY_TYPE_2); assertEquals(output.getProperties(), ValueProperties.with(ValuePropertyNames.FUNCTION, FUNCTION_ID_1, FUNCTION_ID_2).get()); assertEquals(output.getPortfolioNodeProperties(), ValueProperties.with(ValuePropertyNames.FUNCTION, FUNCTION_ID_1).get()); assertEquals(output.getPositionProperties(SECURITY_TYPE_1), ValueProperties.with(ValuePropertyNames.FUNCTION, FUNCTION_ID_2).get()); assertEquals(output.getPositionProperties(SECURITY_TYPE_2), ValueProperties.all()); } public void testPropertiesWildCardNoIndicator() { final AvailableOutputImpl output = new AvailableOutputImpl(VALUE_NAME, null); output.setPortfolioNodeProperties(ValueProperties.with(PROPERTY_1, VALUE_A, VALUE_B).withAny(PROPERTY_2).get()); output.setPortfolioNodeProperties(ValueProperties.withAny(PROPERTY_1).withAny(PROPERTY_2).get()); assertEquals(output.getProperties(), ValueProperties.with(PROPERTY_1, VALUE_A, VALUE_B).withAny(PROPERTY_2).get()); } public void testPropertiesWildCardIndicator() { final AvailableOutputImpl output = new AvailableOutputImpl(VALUE_NAME, WILDCARD); output.setPortfolioNodeProperties(ValueProperties.with(PROPERTY_1, VALUE_A, VALUE_B).withAny(PROPERTY_2).get()); output.setPortfolioNodeProperties(ValueProperties.withAny(PROPERTY_1).withAny(PROPERTY_2).get()); assertEquals(output.getProperties(), ValueProperties.with(PROPERTY_1, VALUE_A, VALUE_B, WILDCARD).withAny(PROPERTY_2).get()); } public void testPropertiesMergeSimple() { final AvailableOutputImpl output = new AvailableOutputImpl(VALUE_NAME, null); output.setPortfolioNodeProperties(ValueProperties.with(ValuePropertyNames.FUNCTION, FUNCTION_ID_1).with(PROPERTY_1, VALUE_A).get()); output.setPortfolioNodeProperties(ValueProperties.with(ValuePropertyNames.FUNCTION, FUNCTION_ID_2).with(PROPERTY_1, VALUE_B).get()); assertEquals(output.getProperties(), ValueProperties.with(ValuePropertyNames.FUNCTION, FUNCTION_ID_1, FUNCTION_ID_2).with(PROPERTY_1, VALUE_A, VALUE_B).get()); } public void testPropertiesMergeOptional() { AvailableOutputImpl output = new AvailableOutputImpl(VALUE_NAME, null); output.setPortfolioNodeProperties(ValueProperties.with(ValuePropertyNames.FUNCTION, FUNCTION_ID_1).with(PROPERTY_1, VALUE_A).get()); output.setPortfolioNodeProperties(ValueProperties.with(ValuePropertyNames.FUNCTION, FUNCTION_ID_2).withOptional(PROPERTY_1).with(PROPERTY_1, VALUE_B).get()); assertEquals(output.getProperties(), ValueProperties.with(ValuePropertyNames.FUNCTION, FUNCTION_ID_1, FUNCTION_ID_2).withOptional(PROPERTY_1).with(PROPERTY_1, VALUE_A, VALUE_B).get()); output = new AvailableOutputImpl(VALUE_NAME, null); output.setPortfolioNodeProperties(ValueProperties.with(ValuePropertyNames.FUNCTION, FUNCTION_ID_1).withOptional(PROPERTY_1).with(PROPERTY_1, VALUE_A).get()); output.setPortfolioNodeProperties(ValueProperties.with(ValuePropertyNames.FUNCTION, FUNCTION_ID_2).with(PROPERTY_1, VALUE_B).get()); assertEquals(output.getProperties(), ValueProperties.with(ValuePropertyNames.FUNCTION, FUNCTION_ID_1, FUNCTION_ID_2).withOptional(PROPERTY_1).with(PROPERTY_1, VALUE_A, VALUE_B).get()); } public void testPropertiesMergeMissing() { final AvailableOutputImpl output = new AvailableOutputImpl(VALUE_NAME, null); output.setPortfolioNodeProperties(ValueProperties.with(ValuePropertyNames.FUNCTION, FUNCTION_ID_1).with(PROPERTY_1, VALUE_A).get()); output.setPortfolioNodeProperties(ValueProperties.with(ValuePropertyNames.FUNCTION, FUNCTION_ID_2).with(PROPERTY_2, VALUE_A).get()); assertEquals(output.getProperties(), ValueProperties.with(ValuePropertyNames.FUNCTION, FUNCTION_ID_1, FUNCTION_ID_2).withOptional(PROPERTY_1).with(PROPERTY_1, VALUE_A).withOptional(PROPERTY_2) .with(PROPERTY_2, VALUE_A).get()); } public void testPropertiesMergeAny() { final AvailableOutputImpl output = new AvailableOutputImpl(VALUE_NAME, null); output.setPortfolioNodeProperties(ValueProperties.with(ValuePropertyNames.FUNCTION, FUNCTION_ID_1).with(PROPERTY_1, VALUE_A).withAny(PROPERTY_2).get()); output.setPortfolioNodeProperties(ValueProperties.with(ValuePropertyNames.FUNCTION, FUNCTION_ID_2).withAny(PROPERTY_1).with(PROPERTY_2, VALUE_A).get()); assertEquals(output.getProperties(), ValueProperties.with(ValuePropertyNames.FUNCTION, FUNCTION_ID_1, FUNCTION_ID_2).with(PROPERTY_1, VALUE_A).with(PROPERTY_2, VALUE_A).get()); } }