Create database functions for rankings
Ranking info can be added, queried, and returned. Tests also written.
Signed-off-by: Yash Chainani <yashchainani28@gmail.com>
Change-Id: I03268c14d5835dce36f6a7fbb31ad23f822dcdbc
diff --git a/scouting/db/db_test.go b/scouting/db/db_test.go
index 02e8d50..5725dcb 100644
--- a/scouting/db/db_test.go
+++ b/scouting/db/db_test.go
@@ -82,6 +82,36 @@
}
}
+func TestAddOrUpdateRankingsDB(t *testing.T) {
+ fixture := createDatabase(t)
+ defer fixture.TearDown()
+
+ correct := []Ranking{
+ Ranking{
+ TeamNumber: 123,
+ Losses: 1, Wins: 7, Ties: 0,
+ Rank: 2, Dq: 0,
+ },
+ Ranking{
+ TeamNumber: 125,
+ Losses: 2, Wins: 4, Ties: 0,
+ Rank: 2, Dq: 0,
+ },
+ }
+
+ for i := 0; i < len(correct); i++ {
+ err := fixture.db.AddOrUpdateRankings(correct[i])
+ check(t, err, "Failed to add ranking data")
+ }
+
+ got, err := fixture.db.ReturnRankings()
+ check(t, err, "Failed ReturnRankings()")
+
+ if !reflect.DeepEqual(correct, got) {
+ t.Fatalf("Got %#v,\nbut expected %#v.", got, correct)
+ }
+}
+
func TestAddToStatsDB(t *testing.T) {
fixture := createDatabase(t)
defer fixture.TearDown()
@@ -283,6 +313,54 @@
}
}
+func TestQueryRankingsDB(t *testing.T) {
+ fixture := createDatabase(t)
+ defer fixture.TearDown()
+
+ testDatabase := []Ranking{
+ Ranking{
+ TeamNumber: 123,
+ Losses: 1, Wins: 7, Ties: 2,
+ Rank: 2, Dq: 0,
+ },
+ Ranking{
+ TeamNumber: 124,
+ Losses: 3, Wins: 4, Ties: 0,
+ Rank: 4, Dq: 2,
+ },
+ Ranking{
+ TeamNumber: 125,
+ Losses: 5, Wins: 2, Ties: 0,
+ Rank: 17, Dq: 0,
+ },
+ Ranking{
+ TeamNumber: 126,
+ Losses: 0, Wins: 7, Ties: 0,
+ Rank: 5, Dq: 0,
+ },
+ }
+
+ for i := 0; i < len(testDatabase); i++ {
+ err := fixture.db.AddOrUpdateRankings(testDatabase[i])
+ check(t, err, fmt.Sprint("Failed to add rankings ", i))
+ }
+
+ correct := []Ranking{
+ Ranking{
+ TeamNumber: 126,
+ Losses: 0, Wins: 7, Ties: 0,
+ Rank: 5, Dq: 0,
+ },
+ }
+
+ got, err := fixture.db.QueryRankings(126)
+ check(t, err, "Failed QueryRankings()")
+
+ if !reflect.DeepEqual(correct, got) {
+ t.Errorf("Got %#v,\nbut expected %#v.", got, correct)
+ }
+}
+
func TestReturnMatchDB(t *testing.T) {
fixture := createDatabase(t)
defer fixture.TearDown()
@@ -328,6 +406,46 @@
}
}
+func TestReturnRankingsDB(t *testing.T) {
+ fixture := createDatabase(t)
+ defer fixture.TearDown()
+
+ correct := []Ranking{
+ Ranking{
+ TeamNumber: 123,
+ Losses: 1, Wins: 7, Ties: 2,
+ Rank: 2, Dq: 0,
+ },
+ Ranking{
+ TeamNumber: 124,
+ Losses: 3, Wins: 4, Ties: 0,
+ Rank: 4, Dq: 2,
+ },
+ Ranking{
+ TeamNumber: 125,
+ Losses: 5, Wins: 2, Ties: 0,
+ Rank: 17, Dq: 0,
+ },
+ Ranking{
+ TeamNumber: 126,
+ Losses: 0, Wins: 7, Ties: 0,
+ Rank: 5, Dq: 0,
+ },
+ }
+
+ for i := 0; i < len(correct); i++ {
+ err := fixture.db.AddOrUpdateRankings(correct[i])
+ check(t, err, fmt.Sprint("Failed to add rankings", i))
+ }
+
+ got, err := fixture.db.ReturnRankings()
+ check(t, err, "Failed ReturnRankings()")
+
+ if !reflect.DeepEqual(correct, got) {
+ t.Errorf("Got %#v,\nbut expected %#v.", got, correct)
+ }
+}
+
func TestReturnStatsDB(t *testing.T) {
fixture := createDatabase(t)
defer fixture.TearDown()
@@ -400,6 +518,59 @@
}
}
+func TestRankingsDbUpdate(t *testing.T) {
+ fixture := createDatabase(t)
+ defer fixture.TearDown()
+
+ testDatabase := []Ranking{
+ Ranking{
+ TeamNumber: 123,
+ Losses: 1, Wins: 7, Ties: 2,
+ Rank: 2, Dq: 0,
+ },
+ Ranking{
+ TeamNumber: 124,
+ Losses: 3, Wins: 4, Ties: 0,
+ Rank: 4, Dq: 2,
+ },
+ Ranking{
+ TeamNumber: 125,
+ Losses: 5, Wins: 2, Ties: 0,
+ Rank: 17, Dq: 0,
+ },
+ Ranking{
+ TeamNumber: 126,
+ Losses: 0, Wins: 7, Ties: 0,
+ Rank: 5, Dq: 0,
+ },
+ Ranking{
+ TeamNumber: 125,
+ Losses: 2, Wins: 4, Ties: 1,
+ Rank: 5, Dq: 0,
+ },
+ }
+
+ for i := 0; i < len(testDatabase); i++ {
+ err := fixture.db.AddOrUpdateRankings(testDatabase[i])
+ check(t, err, fmt.Sprint("Failed to add rankings ", i))
+ }
+
+ correct := []Ranking{
+ Ranking{
+ TeamNumber: 125,
+ Losses: 2, Wins: 4, Ties: 1,
+ Rank: 5, Dq: 0,
+ },
+ }
+
+ got, err := fixture.db.QueryRankings(125)
+ check(t, err, "Failed QueryRankings()")
+
+ if !reflect.DeepEqual(correct, got) {
+ t.Errorf("Got %#v,\nbut expected %#v.", got, correct)
+ }
+}
+
func TestNotes(t *testing.T) {
fixture := createDatabase(t)
defer fixture.TearDown()