|
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 21:55:19
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/runner In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7865/src/test/net/sf/tail/runner Modified Files: HistoryRunnerTest.java ShortSellRunnerTest.java Log Message: Mega refatoração, Runner não está mais vendendo no final de cada slice Index: HistoryRunnerTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/runner/HistoryRunnerTest.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** HistoryRunnerTest.java 22 Oct 2007 16:01:39 -0000 1.14 --- HistoryRunnerTest.java 21 Nov 2007 21:55:21 -0000 1.15 *************** *** 8,14 **** --- 8,20 ---- import net.sf.tail.OperationType; import net.sf.tail.Strategy; + import net.sf.tail.TimeSeries; + import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.Trade; + import net.sf.tail.sample.SampleTimeSeries; + import net.sf.tail.series.RegularSlicer; import net.sf.tail.strategy.FakeStrategy; + import org.joda.time.DateTime; + import org.joda.time.Period; import org.junit.Before; import org.junit.Test; *************** *** 21,27 **** --- 27,40 ---- private Strategy strategy; + + private TimeSeries series; @Before public void setUp() { + DateTime date = new DateTime(); + series = new SampleTimeSeries(new double[]{1d, 2d, 3d, 4d, 5d, 6d, 7d, 8d, 9d}, + new DateTime[]{date.withYear(2000), date.withYear(2000), date.withYear(2000), date.withYear(2000), date.withYear(2001), + date.withYear(2001), date.withYear(2002), date.withYear(2002), date.withYear(2002)}); + enter = new Operation[] { null, null, new Operation(2, OperationType.BUY), new Operation(3, OperationType.BUY), null, null, new Operation(6, OperationType.BUY), null, null }; *************** *** 33,38 **** @Test public void testRunMethod() { ! HistoryRunner historyRunner = new HistoryRunner(OperationType.BUY); ! List<Trade> trades = historyRunner.run(this.strategy, 0, 8); assertEquals(2, trades.size()); --- 46,52 ---- @Test public void testRunMethod() { ! TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(2000)); ! HistoryRunner historyRunner = new HistoryRunner(slicer, strategy); ! List<Trade> trades = historyRunner.run(0); assertEquals(2, trades.size()); *************** *** 46,55 **** @Test public void testRunWithOpenEntryBuyLeft() { ! Operation[] enter = new Operation[] { null, new Operation(1, OperationType.BUY), null, null }; ! Operation[] exit = { null, null, null, null }; Strategy strategy = new FakeStrategy(enter, exit); ! HistoryRunner historyRunner = new HistoryRunner(OperationType.BUY); ! List<Trade> trades = historyRunner.run(strategy, 0, 3); assertEquals(1, trades.size()); --- 60,70 ---- @Test public void testRunWithOpenEntryBuyLeft() { ! TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(1)); ! Operation[] enter = new Operation[] { null, new Operation(1, OperationType.BUY), null, null, null, null, null, null, null }; ! Operation[] exit = { null, null, null, new Operation(3, OperationType.SELL), null, null, null, null, null }; Strategy strategy = new FakeStrategy(enter, exit); ! HistoryRunner historyRunner = new HistoryRunner(slicer, strategy); ! List<Trade> trades = historyRunner.run(0); assertEquals(1, trades.size()); *************** *** 60,69 **** @Test public void testRunWithOpenEntrySellLeft() { ! Operation[] enter = new Operation[] { null, new Operation(1, OperationType.SELL), null, null }; ! Operation[] exit = { null, null, null, null }; Strategy strategy = new FakeStrategy(enter, exit); ! HistoryRunner historyRunner = new HistoryRunner(OperationType.SELL); ! List<Trade> trades = historyRunner.run(strategy, 0, 3); assertEquals(1, trades.size()); --- 75,85 ---- @Test public void testRunWithOpenEntrySellLeft() { ! Operation[] enter = new Operation[] { null, new Operation(1, OperationType.SELL), null, null, null, null, null, null, null }; ! Operation[] exit = { null, null, null, new Operation(3, OperationType.BUY), null, null, null, null, null }; + TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(1)); Strategy strategy = new FakeStrategy(enter, exit); ! HistoryRunner historyRunner = new HistoryRunner(OperationType.SELL, slicer, strategy); ! List<Trade> trades = historyRunner.run(0); assertEquals(1, trades.size()); *************** *** 72,131 **** } - @Test - public void testDoesntRunOnEmptyInterval() { - HistoryRunner runner = new HistoryRunner(OperationType.BUY); - - List<Trade> trades = runner.run(this.strategy, 0, 0); - - assertEquals(0, trades.size()); - } - - @Test(expected = IndexOutOfBoundsException.class) - public void testDoesntRunOnInvalidIntervalNegativeStart() { - HistoryRunner runner = new HistoryRunner(OperationType.BUY); - - @SuppressWarnings("unused") - List<Trade> trades = runner.run(this.strategy, -1, 0); - } - - @Test(expected = IndexOutOfBoundsException.class) - public void testDoesntRunOnInvalidIntervalNegativeEnd() { - HistoryRunner runner = new HistoryRunner(OperationType.BUY); - - @SuppressWarnings("unused") - List<Trade> trades = runner.run(this.strategy, 0, -1); - } - - @Test(expected = IllegalArgumentException.class) - public void testDoesntRunOnInvalidIntervalEndBeforeStarting() { - HistoryRunner runner = new HistoryRunner(OperationType.BUY); - - @SuppressWarnings("unused") - List<Trade> trades = runner.run(this.strategy, 3, 2); - } @Test(expected = NullPointerException.class) public void testNullTypeShouldThrowException() { @SuppressWarnings("unused") ! HistoryRunner runner = new HistoryRunner(null); } @Test public void testRunSplitted() { ! HistoryRunner historyRunner = new HistoryRunner(OperationType.BUY); ! List<Trade> trades = historyRunner.run(this.strategy, 0, 3); ! assertEquals(1, trades.size()); ! ! trades = historyRunner.run(this.strategy, 3, 6); ! assertEquals(1, trades.size()); ! assertEquals(new Operation(3, OperationType.BUY), trades.get(0).getEntry()); assertEquals(new Operation(4, OperationType.SELL), trades.get(0).getExit()); ! trades = historyRunner.run(this.strategy, 6, 8); assertEquals(1, trades.size()); assertEquals(new Operation(6, OperationType.BUY), trades.get(0).getEntry()); assertEquals(new Operation(7, OperationType.SELL), trades.get(0).getExit()); } } --- 88,166 ---- } @Test(expected = NullPointerException.class) public void testNullTypeShouldThrowException() { @SuppressWarnings("unused") ! HistoryRunner runner = new HistoryRunner(null, null); } @Test public void testRunSplitted() { ! TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(1)); ! HistoryRunner historyRunner = new HistoryRunner(slicer, strategy); ! List<Trade> trades = historyRunner.run(0); assertEquals(1, trades.size()); ! assertEquals(new Operation(2, OperationType.BUY), trades.get(0).getEntry()); assertEquals(new Operation(4, OperationType.SELL), trades.get(0).getExit()); + + trades = historyRunner.run(1); ! assertEquals(0, trades.size()); ! ! ! trades = historyRunner.run(2); assertEquals(1, trades.size()); assertEquals(new Operation(6, OperationType.BUY), trades.get(0).getEntry()); assertEquals(new Operation(7, OperationType.SELL), trades.get(0).getExit()); + + } + + @Test + public void testSplitted(){ + DateTime date = new DateTime(); + TimeSeries series = new SampleTimeSeries(new double[]{1d, 2d, 3d, 4d, 5d, 6d, 7d, 8d, 9d, 10d}, + new DateTime[]{date.withYear(2000), date.withYear(2000), date.withYear(2001), date.withYear(2001), date.withYear(2002), + date.withYear(2002), date.withYear(2002), date.withYear(2003), date.withYear(2004), date.withYear(2005)}); + + Operation[] enter = new Operation[] { new Operation(0, OperationType.BUY), null, null, new Operation(3, OperationType.BUY), + null, new Operation(5, OperationType.BUY), null, new Operation(7, OperationType.BUY), null, null }; + Operation[] exit = new Operation[] { null, null, new Operation(2, OperationType.SELL), null, new Operation(4, OperationType.SELL), null, new Operation(6, OperationType.SELL), + null, null, new Operation(9, OperationType.SELL) }; + Strategy strategy = new FakeStrategy(enter, exit); + + TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(1)); + HistoryRunner historyRunner = new HistoryRunner(slicer, strategy); + List<Trade> trades = historyRunner.run(0); + + assertEquals(1, trades.size()); + assertEquals(new Operation(0, OperationType.BUY), trades.get(0).getEntry()); + assertEquals(new Operation(2, OperationType.SELL), trades.get(0).getExit()); + + trades = historyRunner.run(1); + + assertEquals(1, trades.size()); + assertEquals(new Operation(3, OperationType.BUY), trades.get(0).getEntry()); + assertEquals(new Operation(4, OperationType.SELL), trades.get(0).getExit()); + + trades = historyRunner.run(2); + + assertEquals(1, trades.size()); + assertEquals(new Operation(5, OperationType.BUY), trades.get(0).getEntry()); + assertEquals(new Operation(6, OperationType.SELL), trades.get(0).getExit()); + + + trades = historyRunner.run(3); + + assertEquals(1, trades.size()); + assertEquals(new Operation(7, OperationType.BUY), trades.get(0).getEntry()); + assertEquals(new Operation(9, OperationType.SELL), trades.get(0).getExit()); + + trades = historyRunner.run(4); + assertEquals(0, trades.size()); + + trades = historyRunner.run(5); + assertEquals(0, trades.size()); + } } Index: ShortSellRunnerTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/runner/ShortSellRunnerTest.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ShortSellRunnerTest.java 23 Aug 2007 12:51:11 -0000 1.3 --- ShortSellRunnerTest.java 21 Nov 2007 21:55:21 -0000 1.4 *************** *** 9,15 **** --- 9,20 ---- import net.sf.tail.Runner; import net.sf.tail.Strategy; + import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.Trade; + import net.sf.tail.sample.SampleTimeSeries; + import net.sf.tail.series.RegularSlicer; import net.sf.tail.strategy.FakeStrategy; + import org.joda.time.DateTime; + import org.joda.time.Period; import org.junit.Before; import org.junit.Test; *************** *** 22,27 **** --- 27,39 ---- private Strategy strategy; + private SampleTimeSeries series; + @Before public void setUp() { + DateTime date = new DateTime(); + series = new SampleTimeSeries(new double[]{1d, 2d, 3d, 4d, 5d, 6d, 7d, 8d, 9d}, + new DateTime[]{date.withYear(2000), date.withYear(2000), date.withYear(2000), date.withYear(2000), date.withYear(2001), + date.withYear(2001), date.withYear(2002), date.withYear(2002), date.withYear(2002)}); + enter = new Operation[] { null, null, new Operation(2, OperationType.BUY), new Operation(3, OperationType.BUY), null, null, new Operation(6, OperationType.BUY), null, null }; *************** *** 33,38 **** @Test public void testRunMethod() { ! Runner runner = new ShortSellRunner(); ! List<Trade> trades = runner.run(this.strategy, 0, 8); assertEquals(3, trades.size()); --- 45,51 ---- @Test public void testRunMethod() { ! TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(2000)); ! Runner runner = new ShortSellRunner(slicer, strategy); ! List<Trade> trades = runner.run(0); assertEquals(3, trades.size()); *************** *** 50,59 **** @Test public void testRunWithOpenEntryBuyLeft() { ! Operation[] enter = new Operation[] { null, new Operation(1, OperationType.BUY), null, null }; ! Operation[] exit = { null, null, null, null }; Strategy strategy = new FakeStrategy(enter, exit); ! Runner historyRunner = new ShortSellRunner(); ! List<Trade> trades = historyRunner.run(strategy, 0, 3); assertEquals(1, trades.size()); --- 63,73 ---- @Test public void testRunWithOpenEntryBuyLeft() { ! Operation[] enter = new Operation[] { null, new Operation(1, OperationType.BUY), null, null, null, null, null, null, null }; ! Operation[] exit = { null, null, null, new Operation(3, OperationType.SELL), null, null, null, null, null }; + TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(1)); Strategy strategy = new FakeStrategy(enter, exit); ! Runner runner = new ShortSellRunner(slicer, strategy); ! List<Trade> trades = runner.run(0); assertEquals(1, trades.size()); *************** *** 64,73 **** @Test public void testRunWithNoTrades() { ! Operation[] enter = new Operation[] { null, null, null, null }; ! Operation[] exit = { null, null, null, null }; ! Strategy strategy = new FakeStrategy(enter, exit); ! Runner historyRunner = new ShortSellRunner(); ! List<Trade> trades = historyRunner.run(strategy, 0, 3); assertEquals(0, trades.size()); } --- 78,88 ---- @Test public void testRunWithNoTrades() { ! Operation[] enter = new Operation[] { null, null, null, null, null, null, null, null, null }; ! Operation[] exit = { null, null, null, null, null, null, null, null, null }; ! TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(2000)); ! Strategy strategy = new FakeStrategy(enter, exit); ! Runner runner = new ShortSellRunner(slicer, strategy); ! List<Trade> trades = runner.run(0); assertEquals(0, trades.size()); } |