/* * Copyright (C) 2012 - present by Yann Le Tallec. * Please see distribution for license. */ package com.assylias.jbloomberg; import com.assylias.bigblue.utils.TypedObject; import com.google.common.collect.Table; import java.time.LocalDate; import java.util.Map; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; public class HistoricalDataTest { private static final LocalDate NOW = LocalDate.now(); private HistoricalData data; @BeforeMethod(groups = "unit") public void beforeMethod() { data = new HistoricalData(); } @Test(groups = "unit") public void testIsEmpty_Empty() { assertTrue(data.isEmpty()); } @Test(groups = "unit") public void testIsEmpty_NotEmpty() { data.add(NOW, "IBM", "PX LAST", 123.45); assertFalse(data.isEmpty()); } @Test(groups = "unit") public void testGetData() { data.add(NOW, "IBM", "PX LAST", 123); TypedObject value = data.forSecurity("IBM").forField("PX LAST").forDate(NOW); assertEquals(123, value.asInt()); value = data.forSecurity("IBM").forDate(NOW).forField("PX LAST"); assertEquals(123, value.asInt()); } @Test(groups = "unit") public void testGetData_SecurityMap() { data.add(NOW, "IBM", "PX LAST", 123); data.add(NOW, "IBM", "PX VOLUME", 456789); Map<String, TypedObject> values = data.forSecurity("IBM").forDate(NOW).get(); assertEquals(2, values.size()); assertEquals(123, values.get("PX LAST").asInt()); } @Test(groups = "unit") public void testGetData_FieldMap() { data.add(NOW, "IBM", "PX LAST", 123); data.add(NOW, "IBM", "PX VOLUME", 123000); data.add(NOW, "MSFT", "PX LAST", 456); data.add(NOW, "MSFT", "PX VOLUME", 456000); Table<LocalDate, String, TypedObject> values = data.forField("PX LAST").get(); assertEquals(2, values.size()); assertEquals(123, values.get(NOW, "IBM").asInt()); assertEquals(456, values.get(NOW, "MSFT").asInt()); values = data.forField("PX VOLUME").get(); assertEquals(2, values.size()); assertEquals(123000, values.get(NOW, "IBM").asInt()); assertEquals(456000, values.get(NOW, "MSFT").asInt()); assertEquals(data.forField("PX LAST").forSecurity("IBM").forDate(NOW).asInt(), 123); } @Test(groups = "unit") public void testGetData_DateMap() { LocalDate before = NOW.minusDays(5); data.add(NOW, "IBM", "PX LAST", 123); data.add(before, "IBM", "PX LAST", 124); data.add(NOW, "MSFT", "PX LAST", 456); data.add(before, "MSFT", "PX LAST", 457); Map<LocalDate, TypedObject> values = data.forSecurity("IBM").forField("PX LAST").get(); assertEquals(2, values.size()); assertEquals(124, values.get(before).asInt()); } @Test(groups = "unit") public void testGetData_Empty() { data.add(NOW, "IBM", "PX LAST", 123); assertFalse(data.forSecurity("IBM").get().isEmpty()); assertTrue(data.forSecurity("ABC").get().isEmpty()); assertTrue(data.forSecurity("ABC").forDate(NOW).get().isEmpty()); assertTrue(data.forSecurity("ABC").forField("PX LAST").get().isEmpty()); assertNull(data.forSecurity("ABC").forDate(NOW).forField("PX LAST")); assertNull(data.forSecurity("ABC").forField("PX LAST").forDate(NOW)); assertTrue(data.forSecurity("IBM").forDate(NOW.minusDays(5)).get().isEmpty()); assertNull(data.forSecurity("IBM").forDate(NOW.minusDays(5)).forField("PX LAST")); assertNull(data.forSecurity("IBM").forDate(NOW.minusDays(5)).forField("ABC")); assertTrue(data.forSecurity("IBM").forField("DEF").get().isEmpty()); assertNull(data.forSecurity("IBM").forField("DEF").forDate(NOW)); assertNull(data.forSecurity("IBM").forField("DEF").forDate(NOW.minusDays(5))); } @Test(groups = "unit") public void testToString() { //not really testing the output - just making sure no exception is thrown here assertFalse(data.toString().isEmpty()); data.add(NOW, "IBM", "PX LAST", 123); data.add(NOW.plusDays(1), "IBM", "PX LAST", 124); data.add(NOW, "MSFT", "PX LAST", 456); data.add(NOW.plusDays(1), "MSFT", "PX LAST", 457); data.add(NOW, "IBM", "PX VOLUME", 123000); data.add(NOW.plusDays(1), "IBM", "PX VOLUME", 124000); data.add(NOW, "MSFT", "PX VOLUME", 456000); data.add(NOW.plusDays(1), "MSFT", "PX VOLUME", 457000); assertFalse(data.toString().isEmpty()); data.addFieldError("UNKNOWN_FIELD"); data.addSecurityError("UNKNOWN_TICKER"); assertFalse(data.toString().isEmpty()); } }