mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 01:43:16 +01:00
54 lines
1.0 KiB
Go
54 lines
1.0 KiB
Go
package fn
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"testing"
|
|
"testing/quick"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestOptionUnwrapOrFail(t *testing.T) {
|
|
require.Equal(t, Some(1).UnwrapOrFail(t), 1)
|
|
}
|
|
|
|
func TestSomeToOk(t *testing.T) {
|
|
err := errors.New("err")
|
|
require.Equal(t, Some(1).SomeToOk(err), Ok(1))
|
|
require.Equal(t, None[uint8]().SomeToOk(err), Err[uint8](err))
|
|
}
|
|
|
|
func TestSomeToOkf(t *testing.T) {
|
|
errStr := "err"
|
|
require.Equal(t, Some(1).SomeToOkf(errStr), Ok(1))
|
|
require.Equal(
|
|
t, None[uint8]().SomeToOkf(errStr),
|
|
Err[uint8](fmt.Errorf(errStr)),
|
|
)
|
|
}
|
|
|
|
func TestPropTransposeOptResInverts(t *testing.T) {
|
|
f := func(i uint) bool {
|
|
var o Option[Result[uint]]
|
|
switch i % 3 {
|
|
case 0:
|
|
o = Some(Ok(i))
|
|
case 1:
|
|
o = Some(Errf[uint]("error"))
|
|
case 2:
|
|
o = None[Result[uint]]()
|
|
default:
|
|
return false
|
|
}
|
|
|
|
odd := TransposeOptRes(o) ==
|
|
TransposeOptRes(TransposeResOpt(TransposeOptRes(o)))
|
|
even := TransposeResOpt(TransposeOptRes(o)) == o
|
|
|
|
return odd && even
|
|
}
|
|
|
|
require.NoError(t, quick.Check(f, nil))
|
|
}
|