/* * Copyright (C) 2012 - present by Yann Le Tallec. * Please see distribution for license. */ package com.assylias.jbloomberg; import com.assylias.bigblue.utils.TypedObject; import java.time.LocalDate; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Currency; import java.util.Map; import static org.testng.Assert.*; import org.testng.annotations.Test; public class HistoricalRequestBuilderTest { private static final LocalDate NOW = LocalDate.now(); @Test(groups="unit",expectedExceptions = NullPointerException.class) public void testConstructor_NullTickers() { new HistoricalRequestBuilder((Collection<String>) null, Arrays.asList("a"), NOW, NOW); } @Test(groups="unit",expectedExceptions = NullPointerException.class) public void testConstructor_TickersContainsNull() { new HistoricalRequestBuilder(Arrays.<String>asList(null), Arrays.asList("a"), NOW, NOW); } @Test(groups="unit",expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = ".*empty.*") public void testConstructor_EmptyTickers() { new HistoricalRequestBuilder(Collections.<String>emptyList(), Arrays.asList("a"), NOW, NOW); } @Test(groups="unit",expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = ".*empty\\sstrings.*") public void testConstructor_TickersContainsEmptyString() { new HistoricalRequestBuilder(Arrays.asList(""), Arrays.asList("a"), NOW, NOW); } @Test(groups="unit",expectedExceptions = NullPointerException.class) public void testConstructor_NullFields() { new HistoricalRequestBuilder(Arrays.asList("a"), (Collection<String>) null, NOW, NOW); } @Test(groups="unit",expectedExceptions = NullPointerException.class) public void testConstructor_FieldsContainsNull() { new HistoricalRequestBuilder(Arrays.asList("a"), Arrays.<String>asList(null), NOW, NOW); } @Test(groups="unit",expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = ".*empty.*") public void testConstructor_EmptyFields() { new HistoricalRequestBuilder(Arrays.asList("a"), Collections.<String>emptyList(), NOW, NOW); } @Test(groups="unit",expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = ".*empty\\sstrings.*") public void testConstructor_FieldsContainsEmptyString() { new HistoricalRequestBuilder(Arrays.asList("a"), Arrays.asList(""), NOW, NOW); } @Test(groups="unit",expectedExceptions = NullPointerException.class, expectedExceptionsMessageRegExp = ".*start.*") public void testConstructor_NullStartDate() { new HistoricalRequestBuilder(Arrays.asList("a"), Arrays.asList("a"), null, NOW); } @Test(groups="unit",expectedExceptions = NullPointerException.class, expectedExceptionsMessageRegExp = ".*end.*") public void testConstructor_NullEndDate() { new HistoricalRequestBuilder(Arrays.asList("a"), Arrays.asList("a"), NOW, null); } @Test(groups="unit",expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = ".*date.*") public void testConstructor_EndBeforeStart() { new HistoricalRequestBuilder(Arrays.asList("a"), Arrays.asList("a"), NOW, NOW.minusDays(1)); } @Test(groups="unit",expectedExceptions = IllegalArgumentException.class) public void testZeroPoints() { HistoricalRequestBuilder builder = new HistoricalRequestBuilder("IBM US Equity", "PX_LAST", NOW, NOW); builder.maxPoints(0); } @Test(groups="unit",expectedExceptions = IllegalArgumentException.class) public void testPoints_Negative() { HistoricalRequestBuilder builder = new HistoricalRequestBuilder("IBM US Equity", "PX_LAST", NOW, NOW); builder.maxPoints(-1); } @Test(groups="unit",expectedExceptions = NullPointerException.class) public void testPeriod_Null() { HistoricalRequestBuilder builder = new HistoricalRequestBuilder("IBM US Equity", "PX_LAST", NOW, NOW); builder.period(null); } @Test(groups="unit",expectedExceptions = NullPointerException.class) public void testPeriodicityAdjustment_Null() { HistoricalRequestBuilder builder = new HistoricalRequestBuilder("IBM US Equity", "PX_LAST", NOW, NOW); builder.periodicityAdjustment(null); } @Test(groups="unit") public void testConstructor_AllOk() { new HistoricalRequestBuilder("IBM US Equity", "PX_LAST", NOW, NOW); } @Test(groups="unit") public void testConstructor_AllOk_WithOverrides() { HistoricalRequestBuilder builder = new HistoricalRequestBuilder("IBM US Equity", "PX_LAST", NOW, NOW); builder.adjustAbnormalDistributions() .adjustDefault() .adjustNormalDistributions() .adjustSplits() .currency(Currency.getInstance("USD")) .days(HistoricalRequestBuilder.Days.ACTIVE_DAYS_ONLY) .fill(HistoricalRequestBuilder.Fill.NIL_VALUE) .maxPoints(20) .addOverride("TIME_ZONE_OVERRIDE", "22") .period(HistoricalRequestBuilder.Period.DAILY) .periodicityAdjustment(HistoricalRequestBuilder.PeriodicityAdjustment.ACTUAL); } @Test(groups="unit") public void testServiceType() { assertEquals(new HistoricalRequestBuilder("ABC", "DEF", NOW, NOW).getServiceType(), BloombergServiceType.REFERENCE_DATA); } @Test(groups="unit") public void testRequestType() { assertEquals(new HistoricalRequestBuilder("ABC", "DEF", NOW, NOW).getRequestType(), BloombergRequestType.HISTORICAL_DATA); } @Test(groups="requires-bloomberg") public void catchAll() throws Exception { HistoricalRequestBuilder builder = new HistoricalRequestBuilder("IBM US Equity", "CRNCY_ADJ_CURR_EV", NOW.minusWeeks(1), NOW) .currency(Currency.getInstance("USD")) .maxPoints(1) .addOverride("EQY_FUND_CRNCY", "EUR"); BloombergSession session = new DefaultBloombergSession(); try { session.start(); Map<LocalDate, TypedObject> data = session.submit(builder).get().forSecurity("IBM US Equity").forField("CRNCY_ADJ_CURR_EV").get(); assertEquals(data.size(), 1); } finally { session.stop(); } } }