/*
* Copyright (C) 2012 - present by Yann Le Tallec.
* Please see distribution for license.
*/
package com.assylias.jbloomberg;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.Collection;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class ReferenceResultParserTest {
private DefaultBloombergSession session = null;
@BeforeClass(groups = "requires-bloomberg")
public void beforeClass() throws BloombergException {
session = new DefaultBloombergSession();
session.start();
}
@AfterClass(groups = "requires-bloomberg")
public void afterClass() throws BloombergException {
if (session != null) {
session.stop();
}
}
@Test(groups = "requires-bloomberg", expectedExceptions = BloombergException.class,
expectedExceptionsMessageRegExp = ".*[Rr]equest.*")
@SuppressWarnings("unchecked")
public void testParse_NoTickerErrorResponse() throws Exception {
ReferenceRequestBuilder hrb = new ReferenceRequestBuilder("ABC", "ABC");
//Remove the tickers to provoke a ResponseError
Field f = hrb.getClass().getDeclaredField("tickers");
f.setAccessible(true);
Collection<String> tickers = (Collection<String>) f.get(hrb);
tickers.clear();
try {
session.submit(hrb).get(2, TimeUnit.SECONDS);
} catch (ExecutionException e) {
throw (Exception) e.getCause();
}
}
@Test(groups = "requires-bloomberg")
public void testParse_OneInvalidSecurity() throws Exception {
ReferenceRequestBuilder hrb = new ReferenceRequestBuilder("XXX", "PX_LAST");
ReferenceData data = session.submit(hrb).get(2, TimeUnit.SECONDS);
assertTrue(data.hasErrors());
assertTrue(data.getSecurityErrors().contains("XXX"));
}
@Test(groups = "requires-bloomberg")
public void testParse_OneInvalidField() throws Exception {
ReferenceRequestBuilder hrb = new ReferenceRequestBuilder("IBM US Equity", "XXX");
ReferenceData data = session.submit(hrb).get(2, TimeUnit.SECONDS);
assertTrue(data.hasErrors());
assertTrue(data.getFieldErrors().contains("XXX"));
}
@Test(groups = "requires-bloomberg")
public void testParse_OneSecurityOneFieldOk() throws Exception {
ReferenceRequestBuilder hrb = new ReferenceRequestBuilder("IBM US Equity", "PX_LAST");
ReferenceData data = session.submit(hrb).get(2, TimeUnit.SECONDS);
assertFalse(data.isEmpty());
}
@Test(groups = "requires-bloomberg")
public void testParse_TwoSecuritiesTwoFieldsOk() throws Exception {
RequestBuilder<ReferenceData> hrb = new ReferenceRequestBuilder(Arrays.asList("IBM US Equity", "SIE GY Equity"),
Arrays.asList("PX_LAST", "CRNCY_ADJ_MKT_CAP"));
ReferenceData data = session.submit(hrb).get(60, TimeUnit.SECONDS);
assertFalse(data.isEmpty());
assertTrue(data.forSecurity("IBM US Equity").forField("PX_LAST").asDouble() > 0);
}
@Test(groups = "requires-bloomberg")
public void testParse_TwoSecuritiesTwoFieldsWithOverride() throws Exception {
ReferenceRequestBuilder hrb = new ReferenceRequestBuilder(Arrays.asList("IBM US Equity", "SIE GY Equity"),
Arrays.asList("PX_LAST", "CRNCY_ADJ_MKT_CAP"))
.addOverride("EQY_FUND_CRNCY", "USD");
ReferenceData data = session.submit(hrb).get(2, TimeUnit.SECONDS);
assertFalse(data.isEmpty());
}
@Test(groups = "requires-bloomberg")
public void testParse_OtherFieldTypes() throws Exception {
ReferenceRequestBuilder hrb = new ReferenceRequestBuilder("SIE GY Equity",
Arrays.asList("CUR_EMPLOYEES", "CUR_NUM_EMPLOYEES_AS_PER_DT", "EQY_CONSOLIDATED"));
ReferenceData data = session.submit(hrb).get(5, TimeUnit.SECONDS);
assertFalse(data.isEmpty());
}
@Test(groups = "requires-bloomberg")
@SuppressWarnings("unchecked")
public void testParse_BulkData() throws Exception {
ReferenceRequestBuilder hrb = new ReferenceRequestBuilder("SIE GY Equity","TOP_20_HOLDERS_PUBLIC_FILINGS");
ReferenceData data = session.submit(hrb).get(15, TimeUnit.MINUTES);
assertFalse(data.isEmpty());
}
}