Files
coder/coderd/util/lazy/valuewitherror_test.go

53 lines
871 B
Go

package lazy_test
import (
"testing"
"github.com/stretchr/testify/require"
"golang.org/x/xerrors"
"github.com/coder/coder/v2/coderd/util/lazy"
)
func TestLazyWithErrorOK(t *testing.T) {
t.Parallel()
l := lazy.NewWithError(func() (int, error) {
return 1, nil
})
i, err := l.Load()
require.NoError(t, err)
require.Equal(t, 1, i)
}
func TestLazyWithErrorErr(t *testing.T) {
t.Parallel()
l := lazy.NewWithError(func() (int, error) {
return 0, xerrors.New("oh no! everything that could went horribly wrong!")
})
i, err := l.Load()
require.Error(t, err)
require.Equal(t, 0, i)
}
func TestLazyWithErrorPointers(t *testing.T) {
t.Parallel()
a := 1
l := lazy.NewWithError(func() (*int, error) {
return &a, nil
})
b, err := l.Load()
require.NoError(t, err)
c, err := l.Load()
require.NoError(t, err)
*b++
*c++
require.Equal(t, 3, a)
}