github.com/influx6/npkg@v0.8.8/nthen/then_test.go (about)

     1  package nthen
     2  
     3  import (
     4  	"errors"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestFuture_CollectFor(t *testing.T){
    11  	var ft = NewFuture()
    12  	require.False(t, ft.IsResolved())
    13  	require.NoError(t, ft.WithValue(1))
    14  
    15  	var ft2 = NewFuture()
    16  	require.False(t, ft2.IsResolved())
    17  	require.NoError(t, ft2.WithError(errors.New("bad op")))
    18  
    19  	var ft3 = CollectFor(ft, ft2)
    20  	ft3.Wait()
    21  	require.True(t, ft.IsResolved())
    22  	require.Len(t, ft3.Value(), 2)
    23  }
    24  
    25  func TestFuture_WaitFor(t *testing.T){
    26  	var ft = NewFuture()
    27  	require.False(t, ft.IsResolved())
    28  	require.NoError(t, ft.WithValue(1))
    29  
    30  	var ft2 = NewFuture()
    31  	require.False(t, ft2.IsResolved())
    32  	require.NoError(t, ft2.WithError(errors.New("bad op")))
    33  
    34  	var ft3 = WaitFor(ft, ft2)
    35  	ft3.Wait()
    36  	require.True(t, ft.IsResolved())
    37  	require.Len(t, ft3.Value(), 1)
    38  	require.Error(t, ft3.Err())
    39  }
    40  
    41  func TestFuture(t *testing.T){
    42  	var ft = NewFuture()
    43  	require.False(t, ft.IsResolved())
    44  
    45  	require.NoError(t, ft.WithValue(1))
    46  	require.True(t, ft.IsResolved())
    47  	require.NoError(t, ft.Err())
    48  	require.NotNil(t, ft.Value())
    49  }
    50  
    51  func TestFuture_Error(t *testing.T){
    52  	var ft = NewFuture()
    53  	require.False(t, ft.IsResolved())
    54  
    55  	require.NoError(t, ft.WithError(errors.New("yo")))
    56  	require.True(t, ft.IsResolved())
    57  	require.Error(t, ft.Err())
    58  	require.Nil(t, ft.Value())
    59  }