/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.sesame.example;
import static com.opengamma.sesame.config.ConfigBuilder.argument;
import static com.opengamma.sesame.config.ConfigBuilder.arguments;
import static com.opengamma.sesame.config.ConfigBuilder.config;
import static com.opengamma.sesame.config.ConfigBuilder.function;
import static com.opengamma.sesame.config.ConfigBuilder.implementations;
import static org.testng.AssertJUnit.assertEquals;
import org.testng.annotations.Test;
import com.opengamma.core.id.ExternalSchemes;
import com.opengamma.financial.security.equity.EquitySecurity;
import com.opengamma.id.ExternalId;
import com.opengamma.id.ExternalIdBundle;
import com.opengamma.sesame.config.EngineUtils;
import com.opengamma.sesame.config.FunctionModelConfig;
import com.opengamma.sesame.engine.ComponentMap;
import com.opengamma.sesame.function.FunctionMetadata;
import com.opengamma.sesame.graph.FunctionBuilder;
import com.opengamma.sesame.graph.FunctionModel;
import com.opengamma.util.money.Currency;
import com.opengamma.util.test.TestGroup;
@Test(groups = TestGroup.UNIT)
public class DefaultEquityDescriptionFnTest {
private static final EquitySecurity SECURITY;
private static final String SECURITY_NAME = "Apple Equity";
private static final String BLOOMBERG_VALUE = "AAPL US Equity";
private static final String ACTIV_VALUE = "AAPL.";
private static final FunctionMetadata METADATA =
EngineUtils.createMetadata(EquityDescriptionFn.class, "getDescription");
static {
SECURITY = new EquitySecurity("Exchange Name", "EXH", "Apple", Currency.USD);
ExternalId bbg = ExternalId.of(ExternalSchemes.BLOOMBERG_TICKER, BLOOMBERG_VALUE);
ExternalId activ = ExternalId.of(ExternalSchemes.ACTIVFEED_TICKER, ACTIV_VALUE);
SECURITY.setExternalIdBundle(ExternalIdBundle.of(bbg, activ));
SECURITY.setName(SECURITY_NAME);
}
@Test
public void defaultImpl() {
FunctionModelConfig config = config(implementations(EquityDescriptionFn.class, DefaultEquityDescriptionFn.class));
FunctionModel functionModel = FunctionModel.forFunction(METADATA, config);
EquityDescriptionFn fn = (EquityDescriptionFn) functionModel.build(new FunctionBuilder(), ComponentMap.EMPTY).getReceiver();
String description = fn.getDescription(SECURITY);
assertEquals(description, SECURITY_NAME);
}
@Test
public void idImplOverriddenArgs() {
FunctionModelConfig config =
config(implementations(EquityDescriptionFn.class, EquityIdDescriptionFn.class,
IdSchemeFn.class, DefaultIdSchemeFn.class),
arguments(
function(DefaultIdSchemeFn.class,
argument("scheme", ExternalSchemes.ACTIVFEED_TICKER))));
FunctionModel functionModel = FunctionModel.forFunction(METADATA, config);
EquityDescriptionFn fn = (EquityDescriptionFn) functionModel.build(new FunctionBuilder(), ComponentMap.EMPTY).getReceiver();
String description = fn.getDescription(SECURITY);
assertEquals(description, ACTIV_VALUE);
}
}