From 04ade7ef1b02c172a5441c0d8afbc83febe90542 Mon Sep 17 00:00:00 2001 From: Patrick Fairbank Date: Thu, 31 Jul 2014 20:05:53 -0700 Subject: [PATCH] Added tests for referee display. --- displays_test.go | 89 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/displays_test.go b/displays_test.go index e448b3d..5083458 100644 --- a/displays_test.go +++ b/displays_test.go @@ -209,3 +209,92 @@ func TestScoringDisplayWebsocket(t *testing.T) { assert.Equal(t, RealtimeScore{}, *mainArena.redRealtimeScore) assert.Equal(t, RealtimeScore{}, *mainArena.blueRealtimeScore) } + +func TestRefereeDisplay(t *testing.T) { + clearDb() + defer clearDb() + var err error + db, err = OpenDatabase(testDbPath) + assert.Nil(t, err) + defer db.Close() + eventSettings, _ = db.GetEventSettings() + mainArena.Setup() + + recorder := getHttpResponse("/displays/referee") + assert.Equal(t, 200, recorder.Code) + assert.Contains(t, recorder.Body.String(), "Referee Display - Untitled Event - Cheesy Arena") +} + +func TestRefereeDisplayWebsocket(t *testing.T) { + clearDb() + defer clearDb() + var err error + db, err = OpenDatabase(testDbPath) + assert.Nil(t, err) + defer db.Close() + mainArena.Setup() + + server, wsUrl := startTestServer() + defer server.Close() + conn, _, err := websocket.DefaultDialer.Dial(wsUrl+"/displays/referee/websocket", nil) + assert.Nil(t, err) + defer conn.Close() + ws := &Websocket{conn} + + // Test foul addition. + foulData := struct { + Alliance string + TeamId int + Rule string + TimeInMatchSec float64 + IsTechnical bool + }{"red", 256, "G22", 0, false} + ws.Write("addFoul", foulData) + foulData.TeamId = 359 + foulData.IsTechnical = true + ws.Write("addFoul", foulData) + foulData.Alliance = "blue" + foulData.TeamId = 1680 + ws.Write("addFoul", foulData) + readWebsocketType(t, ws, "reload") + readWebsocketType(t, ws, "reload") + readWebsocketType(t, ws, "reload") + if assert.Equal(t, 2, len(mainArena.redRealtimeScore.Fouls)) { + assert.Equal(t, 256, mainArena.redRealtimeScore.Fouls[0].TeamId) + assert.Equal(t, "G22", mainArena.redRealtimeScore.Fouls[0].Rule) + assert.Equal(t, 0, mainArena.redRealtimeScore.Fouls[0].TimeInMatchSec) + assert.Equal(t, false, mainArena.redRealtimeScore.Fouls[0].IsTechnical) + assert.Equal(t, 359, mainArena.redRealtimeScore.Fouls[1].TeamId) + assert.Equal(t, "G22", mainArena.redRealtimeScore.Fouls[1].Rule) + assert.Equal(t, true, mainArena.redRealtimeScore.Fouls[1].IsTechnical) + } + if assert.Equal(t, 1, len(mainArena.blueRealtimeScore.Fouls)) { + assert.Equal(t, 1680, mainArena.blueRealtimeScore.Fouls[0].TeamId) + assert.Equal(t, "G22", mainArena.blueRealtimeScore.Fouls[0].Rule) + assert.Equal(t, 0, mainArena.blueRealtimeScore.Fouls[0].TimeInMatchSec) + assert.Equal(t, true, mainArena.blueRealtimeScore.Fouls[0].IsTechnical) + } + assert.False(t, mainArena.redRealtimeScore.FoulsCommitted) + assert.False(t, mainArena.blueRealtimeScore.FoulsCommitted) + + // Test foul deletion. + ws.Write("deleteFoul", foulData) + readWebsocketType(t, ws, "reload") + assert.Equal(t, 0, len(mainArena.blueRealtimeScore.Fouls)) + foulData.Alliance = "red" + foulData.TeamId = 359 + foulData.TimeInMatchSec = 29 // Make it not match. + ws.Write("deleteFoul", foulData) + readWebsocketType(t, ws, "reload") + assert.Equal(t, 2, len(mainArena.redRealtimeScore.Fouls)) + foulData.TimeInMatchSec = 0 + ws.Write("deleteFoul", foulData) + readWebsocketType(t, ws, "reload") + assert.Equal(t, 1, len(mainArena.redRealtimeScore.Fouls)) + + // Test match committing. + ws.Write("commitMatch", foulData) + readWebsocketType(t, ws, "reload") + assert.True(t, mainArena.redRealtimeScore.FoulsCommitted) + assert.True(t, mainArena.blueRealtimeScore.FoulsCommitted) +}