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 }