/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.sesame.equity; import static com.opengamma.util.result.FailureStatus.MISSING_DATA; import static com.opengamma.util.result.SuccessStatus.SUCCESS; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import org.threeten.bp.ZonedDateTime; import com.opengamma.core.id.ExternalSchemes; import com.opengamma.financial.security.equity.EquitySecurity; import com.opengamma.sesame.Environment; import com.opengamma.sesame.SimpleEnvironment; import com.opengamma.sesame.marketdata.DefaultMarketDataFn; import com.opengamma.sesame.marketdata.MarketDataEnvironment; import com.opengamma.sesame.marketdata.MarketDataEnvironmentBuilder; import com.opengamma.sesame.marketdata.SecurityId; import com.opengamma.util.money.Currency; import com.opengamma.util.result.Result; import com.opengamma.util.result.ResultStatus; import com.opengamma.util.test.TestGroup; @Test(groups= TestGroup.UNIT) public class DefaultEquityPresentValueFnTest { private EquityPresentValueFn _equityPresentValueFn; @BeforeMethod public void setUp() { _equityPresentValueFn = new DefaultEquityPresentValueFn(new DefaultMarketDataFn()); } @Test public void testMarketDataUnavailable() { EquitySecurity security = new EquitySecurity("LSE", "LSE", "BloggsCo", Currency.GBP); security.setExternalIdBundle(ExternalSchemes.bloombergTickerSecurityId("BLGG").toBundle()); ZonedDateTime valuationTime = ZonedDateTime.now(); MarketDataEnvironment emptyEnvironment = new MarketDataEnvironmentBuilder().valuationTime(valuationTime).build(); Environment env = new SimpleEnvironment(valuationTime, emptyEnvironment.toBundle()); Result<Double> result = _equityPresentValueFn.presentValue(env, security); assertThat(result.getStatus(), is((ResultStatus) MISSING_DATA)); } @Test public void testMarketDataAvailable() { EquitySecurity security = new EquitySecurity("LSE", "LSE", "BloggsCo", Currency.GBP); security.setExternalIdBundle(ExternalSchemes.bloombergTickerSecurityId("BLGG").toBundle()); ZonedDateTime valuationTime = ZonedDateTime.now(); MarketDataEnvironmentBuilder builder = new MarketDataEnvironmentBuilder(); MarketDataEnvironment marketDataEnvironment = builder.add(SecurityId.of(security), 123.45) .valuationTime(ZonedDateTime.now()) .build(); Environment env = new SimpleEnvironment(valuationTime, marketDataEnvironment.toBundle()); Result<Double> result = _equityPresentValueFn.presentValue(env, security); assertThat(result.getStatus(), is((ResultStatus) SUCCESS)); assertThat(result.getValue(), is(123.45)); } }