package edu.brown.cs.student; import java.io.PrintStream; import java.sql.SQLException; import java.time.Instant; import java.util.ArrayList; import java.util.List; import edu.brown.cs.student.term.DatabaseQuerier; import edu.brown.cs.student.term.repl.commands.SetupCommand; import edu.brown.cs.student.term.trade.Trade; import org.junit.After; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; //TODO: Write more tests for methods besides stock by name public class DBQuerierTest { /** these should span the entire mock dataset */ //12 am on 3/11 in UTC private Instant start = Instant.parse("2021-03-11T05:00:00.00Z"); //12 am on 3/28 in UTC private Instant end = Instant.parse("2021-03-28T05:00:00.00Z"); private DatabaseQuerier db; @Before public void setUp() { try{ db = new DatabaseQuerier("data/mock_trades.sqlite3"); } catch(Exception e){ System.out.println("DBQuerier Test, couldn't connect to db???"); } } /* * try{ } catch(Exception e) { System.out.println("Error in test"); }*/ @After public void tearDown() { db = null; } @Test public void testNonExistentStock(){ setUp(); try{ List fakeStockList = db.getTradeByStock("NONO", 1, start, end); assertTrue(fakeStockList.isEmpty()); } catch(Exception e) { System.out.println("Error in test"); } tearDown(); } @Test public void testFlippedDates(){ setUp(); try{ List gmeBadDatesList = db.getTradeByStock("GME", 1, end, start); assertTrue(gmeBadDatesList.isEmpty()); } catch(Exception e) { System.out.println("Error in test"); } tearDown(); } @Test public void testTradeByStockNameBuy(){ setUp(); try{ List gmeBuyList = db.getTradeByStock("GME", 1, start, end); System.out.println(gmeBuyList); assertEquals(gmeBuyList.size(), 6); assertEquals(gmeBuyList.get(0).getId(), 482); assertEquals(gmeBuyList.get(3).getId(), 149); assertEquals(gmeBuyList.get(4).getId(), 275); assertEquals(gmeBuyList.get(5).getId(), 30); List teslaBuyList = db.getTradeByStock("TSLA", 1, start, end); assertEquals(teslaBuyList.size(), 16); assertEquals(teslaBuyList.get(0).getId(), 328); assertEquals(teslaBuyList.get(7).getId(), 241); assertEquals(teslaBuyList.get(15).getId(), 774); } catch(Exception e) { System.out.println("Error in testTradeByStockName"); } tearDown(); } @Test public void testTradeByNameOrdering(){ setUp(); try{ List gmeSellList = db.getTradeByStock("GME", 0, start, end); for(int i = 1; i < gmeSellList.size(); i++){ assertTrue(gmeSellList.get(i-1).getTimestamp() < gmeSellList.get(i).getTimestamp()); } List amznBuyList = db.getTradeByStock("AMZN", 1, start, end); for(int i = 1; i < amznBuyList.size(); i++){ assertTrue(amznBuyList.get(i-1).getTimestamp() < amznBuyList.get(i).getTimestamp()); } } catch(Exception e) { System.out.println("Error in test"); } tearDown(); } }