Add test to ensure the StopChannelContext works properly

This commit is contained in:
Matt Keeler 2020-06-24 12:34:57 -04:00
parent e2cfa93f02
commit 1093212176
No known key found for this signature in database
GPG Key ID: 04DBAE1857E0081B
1 changed files with 36 additions and 0 deletions

36
lib/stop_context_test.go Normal file
View File

@ -0,0 +1,36 @@
package lib
import (
"context"
"testing"
"github.com/stretchr/testify/require"
)
func TestStopChannelContext(t *testing.T) {
ch := make(chan struct{})
ctx := StopChannelContext{StopCh: ch}
select {
case <-ctx.Done():
require.FailNow(t, "StopChannelContext should not be done yet")
default:
// do nothing things are good
}
close(ch)
select {
case <-ctx.Done():
// things are good, as we are done
default:
require.FailNow(t, "StopChannelContext should be done")
}
// issue it twice to ensure that we indefinitely return the
// same value - this is what the context interface says is
// the correct behavior.
require.Equal(t, context.Canceled, ctx.Err())
require.Equal(t, context.Canceled, ctx.Err())
}