package org.wkh.bateman.trade; import org.joda.time.DateTime; import java.math.BigDecimal; import java.util.Arrays; import java.util.SortedMap; import java.util.TreeMap; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertTrue; import junit.framework.TestCase; public class TimeSeriesTest extends TestCase { public DateTime today; public DateTime yesterday; public DateTime twoDaysAgo; public TreeMap<DateTime, BigDecimal> prices; public TimeSeries series; @Override public void setUp() throws Exception { super.setUp(); today = new DateTime(); yesterday = today.minusDays(1); twoDaysAgo = today.minusDays(2); prices = new TreeMap<DateTime, BigDecimal>(); prices.put(today, new BigDecimal(9.0)); prices.put(yesterday, new BigDecimal(11.0)); prices.put(twoDaysAgo, new BigDecimal(10.0)); series = new TimeSeries(prices); } public void testOpen() { DateTime oneMinuteLater = today.plusMinutes(1); prices.put(oneMinuteLater, new BigDecimal(9.1)); assertEquals(series.openOnDay(today), new BigDecimal(9.0)); assertEquals(series.openOnDay(oneMinuteLater), new BigDecimal(9.0)); assertEquals(series.openOnDay(yesterday), new BigDecimal(11.0)); } public void testClose() { assertEquals(series.closeOnDay(today), today); DateTime oneMinuteLater = today.plusMinutes(1); prices.put(oneMinuteLater, new BigDecimal(9.1)); assertEquals(series.closeOnDay(today), oneMinuteLater); } public void testRemove() { series.removeDays(1); assertEquals(series.beginningOfSeries(), yesterday); } public void testPriceQuerying() throws Exception { assertEquals(new BigDecimal(11), series.priceAt(yesterday)); } public void testSlicing() throws Exception { prices.put(today.plusDays(1), BigDecimal.ZERO); prices.put(today.plusDays(2), BigDecimal.ZERO); prices.put(today.plusDays(7), BigDecimal.ZERO); series = new TimeSeries(prices); SortedMap<DateTime, BigDecimal> slice = series.dateSlice(today.plusDays(1), today.plusDays(7)); assertEquals(today.plusDays(1), slice.firstKey()); assertTrue(slice.containsKey(today.plusDays(2))); assertEquals(today.plusDays(7), slice.lastKey()); assertEquals(3, slice.keySet().size()); } }