2024-08-12 12:03:56 -07:00
|
|
|
package fn
|
|
|
|
|
|
|
|
import (
|
2024-08-06 15:38:14 -07:00
|
|
|
"errors"
|
2024-08-13 16:36:07 -07:00
|
|
|
"fmt"
|
2024-08-12 12:03:56 -07:00
|
|
|
"testing"
|
2024-08-13 16:36:07 -07:00
|
|
|
"testing/quick"
|
2024-08-12 12:03:56 -07:00
|
|
|
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestResultUnwrapOrFail(t *testing.T) {
|
|
|
|
require.Equal(t, Ok(1).UnwrapOrFail(t), 1)
|
|
|
|
}
|
2024-08-06 15:38:14 -07:00
|
|
|
|
|
|
|
func TestOkToSome(t *testing.T) {
|
|
|
|
require.Equal(t, Ok(1).OkToSome(), Some(1))
|
|
|
|
require.Equal(
|
|
|
|
t, Err[uint8](errors.New("err")).OkToSome(), None[uint8](),
|
|
|
|
)
|
|
|
|
}
|
2024-08-13 16:36:07 -07:00
|
|
|
|
|
|
|
func TestMapOk(t *testing.T) {
|
|
|
|
inc := func(i int) int {
|
|
|
|
return i + 1
|
|
|
|
}
|
|
|
|
f := func(i int) bool {
|
|
|
|
ok := Ok(i)
|
|
|
|
return MapOk(inc)(ok) == Ok(inc(i))
|
|
|
|
}
|
|
|
|
|
|
|
|
require.NoError(t, quick.Check(f, nil))
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestFlattenResult(t *testing.T) {
|
|
|
|
f := func(i int) bool {
|
|
|
|
e := fmt.Errorf("error")
|
|
|
|
|
|
|
|
x := FlattenResult(Ok(Ok(i))) == Ok(i)
|
|
|
|
y := FlattenResult(Ok(Err[int](e))) == Err[int](e)
|
|
|
|
z := FlattenResult(Err[Result[int]](e)) == Err[int](e)
|
|
|
|
|
|
|
|
return x && y && z
|
|
|
|
}
|
|
|
|
|
|
|
|
require.NoError(t, quick.Check(f, nil))
|
|
|
|
}
|