github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/internal/xcontext/done_test.go (about)

     1  package xcontext
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestWithDone(t *testing.T) {
    11  	t.Run("CancelParent", func(t *testing.T) {
    12  		ctx, cancel := context.WithCancel(context.Background())
    13  		done := make(chan struct{})
    14  		ctx1, _ := WithDone(ctx, done)
    15  		require.NoError(t, ctx1.Err())
    16  		cancel()
    17  		require.Error(t, ctx1.Err())
    18  	})
    19  	t.Run("CloseDone", func(t *testing.T) {
    20  		ctx, cancel := context.WithCancel(context.Background())
    21  		defer cancel()
    22  		done := make(chan struct{})
    23  		ctx1, cancel1 := WithDone(ctx, done)
    24  		require.NoError(t, ctx1.Err())
    25  		cancel1()
    26  		require.NoError(t, ctx.Err())
    27  		require.Error(t, ctx1.Err())
    28  	})
    29  }