Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 1 | package db |
| 2 | |
| 3 | import ( |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 4 | "fmt" |
Philipp Schrader | 4953cc3 | 2022-02-25 18:09:02 -0800 | [diff] [blame] | 5 | "os" |
| 6 | "path/filepath" |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 7 | "reflect" |
| 8 | "testing" |
| 9 | ) |
| 10 | |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 11 | // Shortcut for error checking. If the specified error is non-nil, print the |
| 12 | // error message and exit the test. |
| 13 | func check(t *testing.T, err error, message string) { |
| 14 | if err != nil { |
| 15 | t.Fatal(message, ":", err) |
| 16 | } |
| 17 | } |
| 18 | |
Philipp Schrader | 4953cc3 | 2022-02-25 18:09:02 -0800 | [diff] [blame] | 19 | // Creates a database in TEST_TMPDIR so that we don't accidentally write it |
| 20 | // into the runfiles directory. |
| 21 | func createDatabase(t *testing.T) *Database { |
| 22 | // Get the path to our temporary writable directory. |
| 23 | testTmpdir := os.Getenv("TEST_TMPDIR") |
| 24 | db, err := NewDatabase(filepath.Join(testTmpdir, "scouting.db")) |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 25 | check(t, err, "Failed to create new database") |
Philipp Schrader | 4953cc3 | 2022-02-25 18:09:02 -0800 | [diff] [blame] | 26 | return db |
| 27 | } |
| 28 | |
| 29 | func TestAddToMatchDB(t *testing.T) { |
| 30 | db := createDatabase(t) |
| 31 | defer db.Delete() |
| 32 | |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 33 | correct := []Match{ |
| 34 | Match{ |
| 35 | MatchNumber: 7, |
| 36 | Round: 1, |
| 37 | CompLevel: "quals", |
| 38 | R1: 9999, R2: 1000, R3: 777, B1: 0000, B2: 4321, B3: 1234, |
| 39 | r1ID: 1, r2ID: 2, r3ID: 3, b1ID: 4, b2ID: 5, b3ID: 6, |
| 40 | }, |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 41 | } |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 42 | |
| 43 | err := db.AddToMatch(correct[0]) |
| 44 | check(t, err, "Failed to add match data") |
| 45 | |
| 46 | got, err := db.ReturnMatches() |
| 47 | check(t, err, "Failed ReturnMatches()") |
| 48 | |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 49 | if !reflect.DeepEqual(correct, got) { |
| 50 | t.Fatalf("Got %#v,\nbut expected %#v.", got, correct) |
| 51 | } |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 52 | } |
| 53 | |
| 54 | func TestAddToStatsDB(t *testing.T) { |
Philipp Schrader | 4953cc3 | 2022-02-25 18:09:02 -0800 | [diff] [blame] | 55 | db := createDatabase(t) |
| 56 | defer db.Delete() |
| 57 | |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 58 | correct := []Stats{ |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 59 | Stats{ |
| 60 | TeamNumber: 1236, MatchNumber: 7, |
| 61 | ShotsMissed: 9, UpperGoalShots: 5, LowerGoalShots: 4, |
| 62 | ShotsMissedAuto: 3, UpperGoalAuto: 2, LowerGoalAuto: 1, |
| 63 | PlayedDefense: 2, Climbing: 3, |
| 64 | }, |
| 65 | Stats{ |
| 66 | TeamNumber: 1001, MatchNumber: 7, |
| 67 | ShotsMissed: 6, UpperGoalShots: 9, LowerGoalShots: 9, |
| 68 | ShotsMissedAuto: 0, UpperGoalAuto: 0, LowerGoalAuto: 0, |
| 69 | PlayedDefense: 0, Climbing: 0, |
| 70 | }, |
| 71 | Stats{ |
| 72 | TeamNumber: 777, MatchNumber: 7, |
| 73 | ShotsMissed: 5, UpperGoalShots: 7, LowerGoalShots: 12, |
| 74 | ShotsMissedAuto: 0, UpperGoalAuto: 4, LowerGoalAuto: 0, |
| 75 | PlayedDefense: 0, Climbing: 0, |
| 76 | }, |
| 77 | Stats{ |
| 78 | TeamNumber: 1000, MatchNumber: 7, |
| 79 | ShotsMissed: 12, UpperGoalShots: 6, LowerGoalShots: 10, |
| 80 | ShotsMissedAuto: 0, UpperGoalAuto: 7, LowerGoalAuto: 0, |
| 81 | PlayedDefense: 0, Climbing: 0, |
| 82 | }, |
| 83 | Stats{ |
| 84 | TeamNumber: 4321, MatchNumber: 7, |
| 85 | ShotsMissed: 14, UpperGoalShots: 12, LowerGoalShots: 3, |
| 86 | ShotsMissedAuto: 0, UpperGoalAuto: 7, LowerGoalAuto: 0, |
| 87 | PlayedDefense: 0, Climbing: 0, |
| 88 | }, |
| 89 | Stats{ |
| 90 | TeamNumber: 1234, MatchNumber: 7, |
| 91 | ShotsMissed: 3, UpperGoalShots: 4, LowerGoalShots: 0, |
| 92 | ShotsMissedAuto: 0, UpperGoalAuto: 9, LowerGoalAuto: 0, |
| 93 | PlayedDefense: 0, Climbing: 0, |
| 94 | }, |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 95 | } |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 96 | |
| 97 | err := db.AddToMatch(Match{ |
| 98 | MatchNumber: 7, Round: 1, CompLevel: "quals", |
| 99 | R1: 1236, R2: 1001, R3: 777, B1: 1000, B2: 4321, B3: 1234, |
| 100 | r1ID: 1, r2ID: 2, r3ID: 3, b1ID: 4, b2ID: 5, b3ID: 6}) |
| 101 | check(t, err, "Failed to add match") |
| 102 | |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 103 | for i := 0; i < len(correct); i++ { |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 104 | err = db.AddToStats(correct[i]) |
| 105 | check(t, err, "Failed to add stats to DB") |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 106 | } |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 107 | |
| 108 | got, err := db.ReturnStats() |
| 109 | check(t, err, "Failed ReturnStats()") |
| 110 | |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 111 | if !reflect.DeepEqual(correct, got) { |
| 112 | t.Errorf("Got %#v,\nbut expected %#v.", got, correct) |
| 113 | } |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 114 | } |
| 115 | |
| 116 | func TestQueryMatchDB(t *testing.T) { |
Philipp Schrader | 4953cc3 | 2022-02-25 18:09:02 -0800 | [diff] [blame] | 117 | db := createDatabase(t) |
| 118 | defer db.Delete() |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 119 | |
| 120 | testDatabase := []Match{ |
Philipp Schrader | 1e6c0a9 | 2022-02-27 23:30:57 -0800 | [diff] [blame] | 121 | Match{MatchNumber: 2, Round: 1, CompLevel: "quals", R1: 251, R2: 169, R3: 286, B1: 253, B2: 538, B3: 149}, |
| 122 | Match{MatchNumber: 4, Round: 1, CompLevel: "quals", R1: 198, R2: 135, R3: 777, B1: 999, B2: 434, B3: 698}, |
| 123 | Match{MatchNumber: 3, Round: 1, CompLevel: "quals", R1: 147, R2: 421, R3: 538, B1: 126, B2: 448, B3: 262}, |
| 124 | Match{MatchNumber: 6, Round: 1, CompLevel: "quals", R1: 191, R2: 132, R3: 773, B1: 994, B2: 435, B3: 696}, |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 125 | } |
| 126 | |
| 127 | for i := 0; i < len(testDatabase); i++ { |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 128 | err := db.AddToMatch(testDatabase[i]) |
| 129 | check(t, err, fmt.Sprint("Failed to add match", i)) |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 130 | } |
| 131 | |
| 132 | correct := []Match{ |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 133 | Match{ |
| 134 | MatchNumber: 2, Round: 1, CompLevel: "quals", |
| 135 | R1: 251, R2: 169, R3: 286, B1: 253, B2: 538, B3: 149, |
| 136 | r1ID: 1, r2ID: 2, r3ID: 3, b1ID: 4, b2ID: 5, b3ID: 6, |
| 137 | }, |
| 138 | Match{ |
| 139 | MatchNumber: 3, Round: 1, CompLevel: "quals", |
| 140 | R1: 147, R2: 421, R3: 538, B1: 126, B2: 448, B3: 262, |
| 141 | r1ID: 13, r2ID: 14, r3ID: 15, b1ID: 16, b2ID: 17, b3ID: 18, |
| 142 | }, |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 143 | } |
| 144 | |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 145 | got, err := db.QueryMatches(538) |
| 146 | check(t, err, "Failed to query matches for 538") |
| 147 | |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 148 | if !reflect.DeepEqual(correct, got) { |
| 149 | t.Fatalf("Got %#v,\nbut expected %#v.", got, correct) |
| 150 | } |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 151 | } |
| 152 | |
| 153 | func TestQueryStatsDB(t *testing.T) { |
Philipp Schrader | 4953cc3 | 2022-02-25 18:09:02 -0800 | [diff] [blame] | 154 | db := createDatabase(t) |
| 155 | defer db.Delete() |
| 156 | |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 157 | testDatabase := []Stats{ |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 158 | Stats{ |
| 159 | TeamNumber: 1235, MatchNumber: 94, |
| 160 | ShotsMissed: 2, UpperGoalShots: 2, LowerGoalShots: 2, |
| 161 | ShotsMissedAuto: 2, UpperGoalAuto: 2, LowerGoalAuto: 2, |
| 162 | PlayedDefense: 2, Climbing: 2}, |
| 163 | Stats{ |
| 164 | TeamNumber: 1234, MatchNumber: 94, |
| 165 | ShotsMissed: 4, UpperGoalShots: 4, LowerGoalShots: 4, |
| 166 | ShotsMissedAuto: 4, UpperGoalAuto: 4, LowerGoalAuto: 4, |
| 167 | PlayedDefense: 7, Climbing: 2, |
| 168 | }, |
| 169 | Stats{ |
| 170 | TeamNumber: 1233, MatchNumber: 94, |
| 171 | ShotsMissed: 3, UpperGoalShots: 3, LowerGoalShots: 3, |
| 172 | ShotsMissedAuto: 3, UpperGoalAuto: 3, LowerGoalAuto: 3, |
| 173 | PlayedDefense: 3, Climbing: 3, |
| 174 | }, |
| 175 | Stats{ |
| 176 | TeamNumber: 1232, MatchNumber: 94, |
| 177 | ShotsMissed: 5, UpperGoalShots: 5, LowerGoalShots: 5, |
| 178 | ShotsMissedAuto: 5, UpperGoalAuto: 5, LowerGoalAuto: 5, |
| 179 | PlayedDefense: 7, Climbing: 1, |
| 180 | }, |
| 181 | Stats{ |
| 182 | TeamNumber: 1231, MatchNumber: 94, |
| 183 | ShotsMissed: 6, UpperGoalShots: 6, LowerGoalShots: 6, |
| 184 | ShotsMissedAuto: 6, UpperGoalAuto: 6, LowerGoalAuto: 6, |
| 185 | PlayedDefense: 7, Climbing: 1, |
| 186 | }, |
| 187 | Stats{ |
| 188 | TeamNumber: 1239, MatchNumber: 94, |
| 189 | ShotsMissed: 7, UpperGoalShots: 7, LowerGoalShots: 7, |
| 190 | ShotsMissedAuto: 7, UpperGoalAuto: 7, LowerGoalAuto: 3, |
| 191 | PlayedDefense: 7, Climbing: 1, |
| 192 | }, |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 193 | } |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 194 | |
| 195 | err := db.AddToMatch(Match{ |
| 196 | MatchNumber: 94, Round: 1, CompLevel: "quals", |
| 197 | R1: 1235, R2: 1234, R3: 1233, B1: 1232, B2: 1231, B3: 1239}) |
| 198 | check(t, err, "Failed to add match") |
| 199 | |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 200 | for i := 0; i < len(testDatabase); i++ { |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 201 | err = db.AddToStats(testDatabase[i]) |
| 202 | check(t, err, fmt.Sprint("Failed to add stats", i)) |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 203 | } |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 204 | |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 205 | correct := []Stats{ |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 206 | Stats{ |
| 207 | TeamNumber: 1235, MatchNumber: 94, |
| 208 | ShotsMissed: 2, UpperGoalShots: 2, LowerGoalShots: 2, |
| 209 | ShotsMissedAuto: 2, UpperGoalAuto: 2, LowerGoalAuto: 2, |
| 210 | PlayedDefense: 2, Climbing: 2, |
| 211 | }, |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 212 | } |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 213 | |
| 214 | got, err := db.QueryStats(1235) |
| 215 | check(t, err, "Failed QueryStats()") |
| 216 | |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 217 | if !reflect.DeepEqual(correct, got) { |
| 218 | t.Errorf("Got %#v,\nbut expected %#v.", got, correct) |
| 219 | } |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 220 | } |
| 221 | |
| 222 | func TestReturnMatchDB(t *testing.T) { |
Philipp Schrader | 4953cc3 | 2022-02-25 18:09:02 -0800 | [diff] [blame] | 223 | db := createDatabase(t) |
| 224 | defer db.Delete() |
| 225 | |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 226 | correct := []Match{ |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 227 | Match{ |
| 228 | MatchNumber: 2, Round: 1, CompLevel: "quals", |
| 229 | R1: 251, R2: 169, R3: 286, B1: 253, B2: 538, B3: 149, |
| 230 | r1ID: 1, r2ID: 2, r3ID: 3, b1ID: 4, b2ID: 5, b3ID: 6, |
| 231 | }, |
| 232 | Match{ |
| 233 | MatchNumber: 3, Round: 1, CompLevel: "quals", |
| 234 | R1: 147, R2: 421, R3: 538, B1: 126, B2: 448, B3: 262, |
| 235 | r1ID: 7, r2ID: 8, r3ID: 9, b1ID: 10, b2ID: 11, b3ID: 12, |
| 236 | }, |
| 237 | Match{ |
| 238 | MatchNumber: 4, Round: 1, CompLevel: "quals", |
| 239 | R1: 251, R2: 169, R3: 286, B1: 653, B2: 538, B3: 149, |
| 240 | r1ID: 13, r2ID: 14, r3ID: 15, b1ID: 16, b2ID: 17, b3ID: 18, |
| 241 | }, |
| 242 | Match{ |
| 243 | MatchNumber: 5, Round: 1, CompLevel: "quals", |
| 244 | R1: 198, R2: 1421, R3: 538, B1: 26, B2: 448, B3: 262, |
| 245 | r1ID: 19, r2ID: 20, r3ID: 21, b1ID: 22, b2ID: 23, b3ID: 24, |
| 246 | }, |
| 247 | Match{ |
| 248 | MatchNumber: 6, Round: 1, CompLevel: "quals", |
| 249 | R1: 251, R2: 188, R3: 286, B1: 555, B2: 538, B3: 149, |
| 250 | r1ID: 25, r2ID: 26, r3ID: 27, b1ID: 28, b2ID: 29, b3ID: 30, |
| 251 | }, |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 252 | } |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 253 | |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 254 | for i := 0; i < len(correct); i++ { |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 255 | err := db.AddToMatch(correct[i]) |
| 256 | check(t, err, fmt.Sprint("Failed to add match", i)) |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 257 | } |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 258 | |
| 259 | got, err := db.ReturnMatches() |
| 260 | check(t, err, "Failed ReturnMatches()") |
| 261 | |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 262 | if !reflect.DeepEqual(correct, got) { |
| 263 | t.Errorf("Got %#v,\nbut expected %#v.", got, correct) |
| 264 | } |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 265 | } |
| 266 | |
| 267 | func TestReturnStatsDB(t *testing.T) { |
Philipp Schrader | 4953cc3 | 2022-02-25 18:09:02 -0800 | [diff] [blame] | 268 | db := createDatabase(t) |
| 269 | defer db.Delete() |
| 270 | |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 271 | correct := []Stats{ |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 272 | Stats{ |
| 273 | TeamNumber: 1235, MatchNumber: 94, |
| 274 | ShotsMissed: 2, UpperGoalShots: 2, LowerGoalShots: 2, |
| 275 | ShotsMissedAuto: 2, UpperGoalAuto: 2, LowerGoalAuto: 2, |
| 276 | PlayedDefense: 2, Climbing: 2, |
| 277 | }, |
| 278 | Stats{ |
| 279 | TeamNumber: 1236, MatchNumber: 94, |
| 280 | ShotsMissed: 4, UpperGoalShots: 4, LowerGoalShots: 4, |
| 281 | ShotsMissedAuto: 4, UpperGoalAuto: 4, LowerGoalAuto: 4, |
| 282 | PlayedDefense: 7, Climbing: 2, |
| 283 | }, |
| 284 | Stats{ |
| 285 | TeamNumber: 1237, MatchNumber: 94, |
| 286 | ShotsMissed: 3, UpperGoalShots: 3, LowerGoalShots: 3, |
| 287 | ShotsMissedAuto: 3, UpperGoalAuto: 3, LowerGoalAuto: 3, |
| 288 | PlayedDefense: 3, Climbing: 3, |
| 289 | }, |
| 290 | Stats{ |
| 291 | TeamNumber: 1238, MatchNumber: 94, |
| 292 | ShotsMissed: 5, UpperGoalShots: 5, LowerGoalShots: 5, |
| 293 | ShotsMissedAuto: 5, UpperGoalAuto: 5, LowerGoalAuto: 5, |
| 294 | PlayedDefense: 7, Climbing: 1, |
| 295 | }, |
| 296 | Stats{ |
| 297 | TeamNumber: 1239, MatchNumber: 94, |
| 298 | ShotsMissed: 6, UpperGoalShots: 6, LowerGoalShots: 6, |
| 299 | ShotsMissedAuto: 6, UpperGoalAuto: 6, LowerGoalAuto: 6, |
| 300 | PlayedDefense: 7, Climbing: 1, |
| 301 | }, |
| 302 | Stats{ |
| 303 | TeamNumber: 1233, MatchNumber: 94, |
| 304 | ShotsMissed: 7, UpperGoalShots: 7, LowerGoalShots: 7, |
| 305 | ShotsMissedAuto: 7, UpperGoalAuto: 7, LowerGoalAuto: 3, |
| 306 | PlayedDefense: 7, Climbing: 1, |
| 307 | }, |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 308 | } |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 309 | |
| 310 | err := db.AddToMatch(Match{ |
| 311 | MatchNumber: 94, Round: 1, CompLevel: "quals", |
| 312 | R1: 1235, R2: 1236, R3: 1237, B1: 1238, B2: 1239, B3: 1233}) |
| 313 | check(t, err, "Failed to add match") |
| 314 | |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 315 | for i := 0; i < len(correct); i++ { |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 316 | err = db.AddToStats(correct[i]) |
| 317 | check(t, err, fmt.Sprint("Failed to add stats", i)) |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 318 | } |
Philipp Schrader | 83fc272 | 2022-03-10 21:59:20 -0800 | [diff] [blame] | 319 | |
| 320 | got, err := db.ReturnStats() |
| 321 | check(t, err, "Failed ReturnStats()") |
| 322 | |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 323 | if !reflect.DeepEqual(correct, got) { |
| 324 | t.Errorf("Got %#v,\nbut expected %#v.", got, correct) |
| 325 | } |
Sabina Leaver | c5fd277 | 2022-01-29 17:00:23 -0800 | [diff] [blame] | 326 | } |
Alex Perry | 871eab9 | 2022-03-12 17:43:52 -0800 | [diff] [blame] | 327 | |
| 328 | func TestNotes(t *testing.T) { |
| 329 | db := createDatabase(t) |
| 330 | defer db.Delete() |
| 331 | |
| 332 | expected := NotesData{ |
| 333 | TeamNumber: 1234, |
| 334 | Notes: []string{"Note 1", "Note 3"}, |
| 335 | } |
| 336 | |
| 337 | err := db.AddNotes(NotesData{1234, []string{"Note 1"}}) |
| 338 | check(t, err, "Failed to add Note") |
| 339 | err = db.AddNotes(NotesData{1235, []string{"Note 2"}}) |
| 340 | check(t, err, "Failed to add Note") |
| 341 | err = db.AddNotes(NotesData{1234, []string{"Note 3"}}) |
| 342 | check(t, err, "Failed to add Note") |
| 343 | |
| 344 | actual, err := db.QueryNotes(1234) |
| 345 | check(t, err, "Failed to get Notes") |
| 346 | |
| 347 | if !reflect.DeepEqual(expected, actual) { |
| 348 | t.Errorf("Got %#v,\nbut expected %#v.", actual, expected) |
| 349 | } |
| 350 | } |