diff --git a/waiterr_test.go b/waiterr_test.go index 293f7dc..3c74feb 100644 --- a/waiterr_test.go +++ b/waiterr_test.go @@ -64,3 +64,31 @@ func TestWaitForErrorNoErr(t *testing.T) { err := we.WaitForError() be.Err(t, err, nil) } + +func TestUnwrap(tt *testing.T) { + tt.Run("two errors", func(t *testing.T) { + we := new(waiterr.WaitErr) + er1 := errors.New("error one") + er2 := errors.New("error two") + + we.Go(func() error { return er1 }) + we.Go(func() error { return nil }) + we.Go(func() error { return er2 }) + we.Go(func() error { return nil }) + + _ = we.Wait() // Ensure all goroutines complete + + unwrapped := we.Unwrap() + be.Equal(t, len(unwrapped), 2) + be.True(t, (unwrapped[0] == er1 && unwrapped[1] == er2) || (unwrapped[0] == er2 && unwrapped[1] == er1)) + + }) + + tt.Run("no errors", func(t *testing.T) { + weNoErr := new(waiterr.WaitErr) + weNoErr.Go(func() error { return nil }) + weNoErr.Go(func() error { return nil }) + _ = weNoErr.Wait() + be.Equal(t, weNoErr.Unwrap(), nil) + }) +}