Added WaitForValue test function

graph-rework
noah metz 2023-06-03 02:07:16 -06:00
parent f6a36f9028
commit 3f7d452954
2 changed files with 33 additions and 22 deletions

@ -9,13 +9,30 @@ import (
type graph_tester testing.T type graph_tester testing.T
const listner_timeout = 50 * time.Millisecond const listner_timeout = 50 * time.Millisecond
func (t * graph_tester) CheckForValue(listener chan GraphSignal, str string) { func (t * graph_tester) WaitForValue(listener chan GraphSignal, signal_type string, timeout time.Duration, str string) GraphSignal {
timeout_channel := time.After(timeout)
for true {
select {
case signal := <- listener:
if signal.Type() == signal_type {
return signal
}
case <-timeout_channel:
t.Fatal(str)
return nil
}
}
return nil
}
func (t * graph_tester) CheckForValue(listener chan GraphSignal, str string) GraphSignal {
timeout := time.After(listner_timeout) timeout := time.After(listner_timeout)
select { select {
case <- listener: case signal := <- listener:
return return signal
case <-timeout: case <-timeout:
t.Fatal(str) t.Fatal(str)
return nil
} }
} }

@ -149,37 +149,31 @@ func TestNewMatch(t *testing.T) {
}() }()
go func(match_c chan GraphSignal) { go func(match_c chan GraphSignal) {
(*graph_tester)(t).CheckForValue(match_c, "no update to match after starting 1") (*graph_tester)(t).WaitForValue(match_c, "event_start", 1*time.Second, "no event_start")
(*graph_tester)(t).CheckForValue(match_c, "no update to match after starting 2") (*graph_tester)(t).CheckForNone(match_c, "update to match after starting")
(*graph_tester)(t).CheckForNone(match_c, "update to match after starting 3")
SendUpdate(arena, NewSignal(nil, "queue_autonomous")) SendUpdate(arena, NewSignal(nil, "queue_autonomous"))
(*graph_tester)(t).CheckForValue(match_c, "no update to match after queueing autonomous 1") (*graph_tester)(t).WaitForValue(match_c, "autonomous_queued", 1*time.Second, "no autonomous_queued")
(*graph_tester)(t).CheckForValue(match_c, "no update to match after queueing autonomous 2") (*graph_tester)(t).CheckForNone(match_c, "update to match after queueing autonomous")
(*graph_tester)(t).CheckForNone(match_c, "update to match after queueing autonomous 3")
auton_signal := NewSignal(nil, "start_autonomous") auton_signal := NewSignal(nil, "start_autonomous")
auton_signal.time = time.Now() auton_signal.time = time.Now()
SendUpdate(arena, auton_signal) SendUpdate(arena, auton_signal)
(*graph_tester)(t).CheckForValue(match_c, "no update to match after starting autonomous 1") (*graph_tester)(t).WaitForValue(match_c, "autonomous_running", 1*time.Second, "no autonomous_running")
(*graph_tester)(t).CheckForValue(match_c, "no update to match after starting autonomous 2") (*graph_tester)(t).CheckForNone(match_c, "update to match after starting autonomous")
(*graph_tester)(t).CheckForNone(match_c, "update to match after starting autonomous 3")
time.Sleep(TEMP_AUTON_TIME) time.Sleep(TEMP_AUTON_TIME)
time.Sleep(time.Millisecond * 100) time.Sleep(time.Millisecond * 100)
(*graph_tester)(t).CheckForValue(match_c, "no update to match after ending autonomous 1") (*graph_tester)(t).WaitForValue(match_c, "autonomous_done", 6*time.Second, "no autonomous_done")
(*graph_tester)(t).CheckForNone(match_c, "update to match after ending autonomous 2") (*graph_tester)(t).CheckForNone(match_c, "update to match after ending autonomous")
SendUpdate(arena, NewSignal(nil, "queue_driver")) SendUpdate(arena, NewSignal(nil, "queue_driver"))
(*graph_tester)(t).CheckForValue(match_c, "no update to match after queueing driver 1") (*graph_tester)(t).WaitForValue(match_c, "driver_queued", 1*time.Second, "no driver_queued")
(*graph_tester)(t).CheckForValue(match_c, "no update to match after queueing driver 2") (*graph_tester)(t).CheckForNone(match_c, "update to match after queueing driver")
(*graph_tester)(t).CheckForNone(match_c, "update to match after queueing driver 3")
driver_signal := NewSignal(nil, "start_driver") driver_signal := NewSignal(nil, "start_driver")
driver_signal.time = time.Now() driver_signal.time = time.Now()
SendUpdate(arena, driver_signal) SendUpdate(arena, driver_signal)
(*graph_tester)(t).CheckForValue(match_c, "no update to match after starting driver 1") (*graph_tester)(t).WaitForValue(match_c, "driver_running", 1*time.Second, "no driver_running")
(*graph_tester)(t).CheckForValue(match_c, "no update to match after starting driver 2") (*graph_tester)(t).CheckForNone(match_c, "update to match after starting driver")
(*graph_tester)(t).CheckForNone(match_c, "update to match after starting driver 3")
time.Sleep(TEMP_DRIVE_TIME) time.Sleep(TEMP_DRIVE_TIME)
time.Sleep(time.Millisecond * 100) time.Sleep(time.Millisecond * 100)
(*graph_tester)(t).CheckForValue(match_c, "no update to match after game done 1") (*graph_tester)(t).WaitForValue(match_c, "driver_done", 1*time.Second, "no driver_done")
(*graph_tester)(t).CheckForValue(match_c, "no update to match after game done 2")
(*graph_tester)(t).CheckForNone(match_c, "update to match after game done 3") (*graph_tester)(t).CheckForNone(match_c, "update to match after game done 3")
}(match_c) }(match_c)