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 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 { /** 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; 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"); @Before public void setUp() { try{ db = new DatabaseQuerier("data/lil_mock.sqlite3"); } catch(Exception e){ System.out.println("DBQuerier Test, couldn't connect to db???"); } } @After public void tearDown() { db = null; } @Test public void testEmptyDB(){ try{ db = new DatabaseQuerier("data/testing/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 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 hubRanks = hub.runHubSearch(end, start); assertTrue(hubRanks.isEmpty()); tearDown(); } @Test public void testHubRankSmall(){ setUp(); LinkMapper lm = new LinkMapper(db); HubSearch hub = new HubSearch(lm); Map 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 hubRanks = hub.runHubSearch(start, end); 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(); } @Test public void testFollowersSetsConstructedProperly(){ setUp(); LinkMapper lm = new LinkMapper(db); HubSearch hub = new HubSearch(lm); Map hubRanks = hub.runHubSearch(start, end); for(Holder person: hubRanks.keySet()){ System.out.println(person.getName() + " " + person.getFollowers()); if(person.equals(don)) { assertTrue(person.getFollowers().contains(mitch)); assertTrue(person.getFollowers().contains(nancy)); assertTrue(person.getFollowers().contains(midge)); } else if(person.equals(bob)){ assertTrue(person.getFollowers().contains(mitch)); assertTrue(person.getFollowers().contains(midge)); } else if(person.equals(nancy)){ assertTrue(person.getFollowers().contains(midge)); } else if(person.equals(mitch)){ assertTrue(person.getFollowers().contains(nancy)); assertTrue(person.getFollowers().contains(midge)); assertTrue(person.getFollowers().contains(bob)); } else{ assertTrue(person.getFollowers().isEmpty()); } } tearDown(); } //TODO: Test special case where all the hub ranks should be the same }