diff options
Diffstat (limited to 'src/test/java/edu/brown/cs')
4 files changed, 291 insertions, 53 deletions
diff --git a/src/test/java/edu/brown/cs/student/DBQuerierTest.java b/src/test/java/edu/brown/cs/student/DBQuerierTest.java index d813969..b3ea140 100644 --- a/src/test/java/edu/brown/cs/student/DBQuerierTest.java +++ b/src/test/java/edu/brown/cs/student/DBQuerierTest.java @@ -1,21 +1,18 @@ 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; +import static org.junit.Assert.assertFalse; -//TODO: Write more tests for methods besides stock by name public class DBQuerierTest { /** these should span the entire mock dataset */ @@ -35,12 +32,6 @@ public class DBQuerierTest { } } - /* - * try{ - - } catch(Exception e) { - System.out.println("Error in test"); - }*/ @After public void tearDown() { @@ -50,34 +41,114 @@ public class DBQuerierTest { @Test public void testNonExistentStock(){ setUp(); + List<Trade> fakeStockList = new ArrayList<>(); + try{ + fakeStockList = db.getTradeByStock("NONO", 1, start, end); + } catch(Exception e) { + System.out.println("Error in test"); + } + assertTrue(fakeStockList.isEmpty()); + tearDown(); + } + + @Test + public void testEmptyDatabase(){ try{ - List<Trade> fakeStockList = db.getTradeByStock("NONO", 1, start, end); - assertTrue(fakeStockList.isEmpty()); + db = new DatabaseQuerier("data/empty.sqlite3"); + } catch(Exception e){ + System.out.println("DBQuerier Test, couldn't connect to db???"); + } + + List<Trade> gmeBadDatesList = new ArrayList<>(); + List<String> noStocks = new ArrayList<>(); + List<List<Trade>> noTrades = new ArrayList<>(); + try { + gmeBadDatesList = db.getTradeByStock("GME", 1, start, end); + noStocks = db.getRecentStocks(start, end); + noTrades = db.getAllTradesByStock(start, end); + } catch (Exception e){ + System.out.println("ERROR: in test"); + } + assertTrue(gmeBadDatesList.isEmpty()); + assertTrue(noStocks.isEmpty()); + assertTrue(noTrades.isEmpty()); + tearDown(); + } + + @Test + public void testEmptyStringStock(){ + setUp(); + List<Trade> fakeStockList = new ArrayList<>(); + try{ + fakeStockList = db.getTradeByStock("", 1, start, end); } catch(Exception e) { System.out.println("Error in test"); } + assertTrue(fakeStockList.isEmpty()); tearDown(); } @Test - public void testFlippedDates(){ + public void testNeitherIsBuyOrSell(){ setUp(); + List<Trade> fakeStockList = new ArrayList<>(); try{ - List<Trade> gmeBadDatesList = db.getTradeByStock("GME", 1, end, start); - assertTrue(gmeBadDatesList.isEmpty()); + fakeStockList = db.getTradeByStock("GME", 3, start, end); + } catch(Exception e) { + System.out.println("Error in test"); + } + assertTrue(fakeStockList.isEmpty()); + tearDown(); + } + @Test + public void testIsSell(){ + setUp(); + List<Trade> sellGMEList = new ArrayList<>(); + try{ + sellGMEList = db.getTradeByStock("GME", 0, start, end); } catch(Exception e) { System.out.println("Error in test"); } + assertEquals(7, sellGMEList.size()); + for(Trade t: sellGMEList){ + assertFalse(t.isBuy()); + } + tearDown(); + } + + + @Test + public void testFlippedDates(){ + setUp(); + List<Trade> gmeBadDatesList = new ArrayList<>(); + List<String> noStocks = new ArrayList<>(); + List<List<Trade>> noTrades = new ArrayList<>(); + try{ + gmeBadDatesList = db.getTradeByStock("GME", 1, end, start); + noStocks = db.getRecentStocks(end, start); + noTrades = db.getAllTradesByStock(end, start); + } catch(Exception e) { + System.out.println("Error in test"); + } + assertTrue(gmeBadDatesList.isEmpty()); + assertTrue(noStocks.isEmpty()); + assertTrue(noTrades.isEmpty()); tearDown(); } @Test public void testTradeByStockNameBuy(){ setUp(); + List<Trade> gmeBuyList = new ArrayList<>(); + List<Trade> teslaBuyList = new ArrayList<>(); try{ - List<Trade> gmeBuyList = db.getTradeByStock("GME", 1, start, end); + gmeBuyList = db.getTradeByStock("GME", 1, start, end); + teslaBuyList = db.getTradeByStock("TSLA", 1, start, end); + } catch(Exception e) { + System.out.println("Error in testTradeByStockName"); + } System.out.println(gmeBuyList); assertEquals(gmeBuyList.size(), 6); assertEquals(gmeBuyList.get(0).getId(), 482); @@ -85,16 +156,12 @@ public class DBQuerierTest { assertEquals(gmeBuyList.get(4).getId(), 275); assertEquals(gmeBuyList.get(5).getId(), 30); - - List<Trade> 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(); } @@ -103,20 +170,60 @@ public class DBQuerierTest { public void testTradeByNameOrdering(){ setUp(); + List<Trade> gmeSellList = new ArrayList<>(); + List<Trade> amznBuyList = new ArrayList<>(); try{ - List<Trade> 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()); - } + gmeSellList = db.getTradeByStock("GME", 0, start, end); + amznBuyList = db.getTradeByStock("AMZN", 1, start, end); + } catch(Exception e) { + System.out.println("Error in test"); + } - List<Trade> 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()); - } + for(int i = 1; i < gmeSellList.size(); i++){ + assertTrue(gmeSellList.get(i-1).getTimestamp() < gmeSellList.get(i).getTimestamp()); + } - } catch(Exception e) { + + for(int i = 1; i < amznBuyList.size(); i++){ + assertTrue(amznBuyList.get(i-1).getTimestamp() < amznBuyList.get(i).getTimestamp()); + } + tearDown(); + } + + @Test + public void testGetRecentStocks(){ + setUp(); + List<String> stockNames = new ArrayList<>(); + try { + stockNames = db.getRecentStocks(start, end); + }catch(Exception e){ System.out.println("Error in test"); } + assertEquals(50, stockNames.size()); tearDown(); } + + @Test + public void testGetAllTradesByStock(){ + setUp(); + List<List<Trade>> trades = new ArrayList<>(); + try { + trades = db.getAllTradesByStock(start, end); + }catch(Exception e){ + System.out.println("Error in test"); + } + + assertEquals(100, trades.size()); + + for(List<Trade> tList: trades){ + Trade first = tList.get(0); + for(Trade t: tList){ + //all things in each list should be for the same stock and same isBuy type + assertEquals(first.isBuy(), t.isBuy()); + assertEquals(first.getStock(), t.getStock()); + } + } + tearDown(); + } + } diff --git a/src/test/java/edu/brown/cs/student/HubRankTest.java b/src/test/java/edu/brown/cs/student/HubRankTest.java index 9ba0987..cbe6112 100644 --- a/src/test/java/edu/brown/cs/student/HubRankTest.java +++ b/src/test/java/edu/brown/cs/student/HubRankTest.java @@ -7,9 +7,12 @@ import edu.brown.cs.student.term.hub.LinkMapper; import org.junit.After; import org.junit.Before; import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import java.time.Instant; import java.util.Map; +import java.util.Set; public class HubRankTest { @@ -30,25 +33,66 @@ public class HubRankTest { } } - /* - * try{ - - } catch(Exception e) { - System.out.println("Error in test"); - }*/ - @After public void tearDown() { db = null; } @Test - public void testMapper(){ + public void testEmptyDB(){ + try{ + db = new DatabaseQuerier("data/empty.sqlite3"); + } catch(Exception e){ + System.out.println("DBQuerier Test, couldn't connect to db???"); + } + LinkMapper lm = new LinkMapper(db); + HubSearch hub = new HubSearch(lm); + Map<Holder, Double> hubRanks = hub.runHubSearch(start, end); + assertTrue(hubRanks.isEmpty()); + tearDown(); + } + + @Test + public void flippedDates(){ + setUp(); + LinkMapper lm = new LinkMapper(db); + HubSearch hub = new HubSearch(lm); + Map<Holder, Double> hubRanks = hub.runHubSearch(end, start); + assertTrue(hubRanks.isEmpty()); + tearDown(); + + } + + @Test + public void testHubRankSmall(){ setUp(); LinkMapper lm = new LinkMapper(db); - lm.makeFollowerLinks(start, end); HubSearch hub = new HubSearch(lm); - Map<Holder, Double> him = hub.runHubSearch(start, end); - System.out.println(him); + Map<Holder, Double> hubRanks = hub.runHubSearch(start, end); + assertEquals(6, hubRanks.size()); + tearDown(); + } + + @Test + public void testCheckRightValues(){ + setUp(); + LinkMapper lm = new LinkMapper(db); + HubSearch hub = new HubSearch(lm); + Map<Holder, Double> hubRanks = hub.runHubSearch(start, end); + Holder don = new Holder(1, "Don"); + Holder mitch = new Holder(2, "Mitch"); + Holder nancy = new Holder(3, "Nancy"); + Holder midge = new Holder(4, "Midge"); + Holder bob = new Holder(5, "Bob"); + Holder jane = new Holder(6, "Jane"); + + System.out.println(hubRanks); + assertTrue(hubRanks.get(mitch) > hubRanks.get(don)); + assertTrue(hubRanks.get(don) > hubRanks.get(bob)); + assertTrue(hubRanks.get(bob) > hubRanks.get(nancy)); + assertTrue(hubRanks.get(nancy)> hubRanks.get(jane)); + assertTrue(hubRanks.get(nancy) > hubRanks.get(midge)); + + tearDown(); } } diff --git a/src/test/java/edu/brown/cs/student/LinkMapperTest.java b/src/test/java/edu/brown/cs/student/LinkMapperTest.java index 2683b90..3d4bedc 100644 --- a/src/test/java/edu/brown/cs/student/LinkMapperTest.java +++ b/src/test/java/edu/brown/cs/student/LinkMapperTest.java @@ -10,6 +10,10 @@ import org.junit.Test; import java.time.Instant; import java.util.Map; +import java.util.Set; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + public class LinkMapperTest { @@ -30,26 +34,57 @@ public class LinkMapperTest { } } - /* - * try{ - - } catch(Exception e) { - System.out.println("Error in test"); - }*/ - @After public void tearDown() { db = null; } @Test - public void testMapper(){ + public void testBasicMapper(){ + setUp(); + LinkMapper lm = new LinkMapper(db); + Map<Holder, Set<Holder>> linkMap = lm.makeFollowerLinks(start, end); + //should be one for each person in little mock (6) + assertEquals(6, linkMap.keySet().size()); + + for(Holder h: linkMap.keySet()){ + //didn't follow anyone elses trades + if(h.getName().equals("Don") || h.getName().equals("Jane")){ + assertTrue(linkMap.get(h).isEmpty()); + //biggest follower + } else if(h.getName().equals("Midge")){ + assertEquals(4, linkMap.get(h).size()); + } else if(h.getName().equals("Nancy") || h.getName().equals("Mitch")){ + assertEquals(2, linkMap.get(h).size()); + } else { + //should be Bob, only followed Mitch + assertEquals(1, linkMap.get(h).size()); + } + } + tearDown(); + } + + @Test + public void testBadDate(){ setUp(); LinkMapper lm = new LinkMapper(db); - lm.makeFollowerLinks(start, end); - HubSearch hub = new HubSearch(lm); - Map<Holder, Double> him = hub.runHubSearch(start, end); - System.out.println(him); + Map<Holder, Set<Holder>> linkMap = lm.makeFollowerLinks(end, start); + assertTrue(linkMap.isEmpty()); + tearDown(); + } + + @Test + public void testEmptyDB(){ + try{ + db = new DatabaseQuerier("data/empty.sqlite3"); + } catch(Exception e){ + System.out.println("DBQuerier Test, couldn't connect to db???"); + } + LinkMapper lm = new LinkMapper(db); + Map<Holder, Set<Holder>> linkMap = lm.makeFollowerLinks(start, end); + //should be one for each person in little mock (6) + assertTrue(linkMap.isEmpty()); + } } diff --git a/src/test/java/edu/brown/cs/student/SuspicionRankerTest.java b/src/test/java/edu/brown/cs/student/SuspicionRankerTest.java new file mode 100644 index 0000000..d641507 --- /dev/null +++ b/src/test/java/edu/brown/cs/student/SuspicionRankerTest.java @@ -0,0 +1,52 @@ +package edu.brown.cs.student; + +import edu.brown.cs.student.term.DatabaseQuerier; +import edu.brown.cs.student.term.hub.Holder; +import edu.brown.cs.student.term.hub.HubSearch; +import edu.brown.cs.student.term.hub.LinkMapper; +import edu.brown.cs.student.term.hub.SuspicionRanker; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import java.time.Instant; +import java.util.List; +import java.util.Map; + +public class SuspicionRankerTest { + + //12 am on 3/11 in UTC + //private Instant start = Instant.parse("2021-03-11T05:00:00.00Z"); + private Instant start = Instant.ofEpochMilli(161800418000L); + //12 am on 3/28 in UTC + //private Instant end = Instant.parse("2021-03-28T05:00:00.00Z"); + private Instant end = Instant.ofEpochMilli(1618019436000L); + + private DatabaseQuerier db; + + @Before + public void setUp() { + try{ + db = new DatabaseQuerier("data/trades.sqlite3"); + } catch(Exception e){ + System.out.println("DBQuerier Test, couldn't connect to db???"); + } + } + + @After + public void tearDown() { + db = null; + } + + @Test + public void testMapper(){ + setUp(); + SuspicionRanker r = new SuspicionRanker(db); + List<Holder> him = r.getSuspicionScoreList(start, end); + //System.out.println(him); + for(Holder guy: him){ + System.out.println(guy.getName() + " " + guy.getSuspicionScore()); + } + tearDown(); + } +} |