mirror of
https://github.com/samber/lo.git
synced 2025-09-26 20:11:13 +08:00
327 lines
5.6 KiB
Go
327 lines
5.6 KiB
Go
package lo
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestMust(t *testing.T) {
|
|
is := assert.New(t)
|
|
is.Equal("foo", Must("foo", nil))
|
|
is.Panics(func() {
|
|
Must("", errors.New("something went wrong"))
|
|
})
|
|
|
|
is.Equal(1, Must(1, true))
|
|
is.Panics(func() {
|
|
Must(1, false)
|
|
})
|
|
}
|
|
|
|
func TestMustX(t *testing.T) {
|
|
is := assert.New(t)
|
|
|
|
{
|
|
is.Panics(func() {
|
|
Must0(errors.New("something went wrong"))
|
|
})
|
|
is.NotPanics(func() {
|
|
Must0(nil)
|
|
})
|
|
}
|
|
|
|
{
|
|
val1 := Must1(1, nil)
|
|
is.Equal(1, val1)
|
|
is.Panics(func() {
|
|
Must1(1, errors.New("something went wrong"))
|
|
})
|
|
is.NotPanics(func() {
|
|
Must1(1, nil)
|
|
})
|
|
}
|
|
|
|
{
|
|
val1, val2 := Must2(1, 2, nil)
|
|
is.Equal(1, val1)
|
|
is.Equal(2, val2)
|
|
is.Panics(func() {
|
|
Must2(1, 2, errors.New("something went wrong"))
|
|
})
|
|
is.NotPanics(func() {
|
|
Must2(1, 2, nil)
|
|
})
|
|
}
|
|
|
|
{
|
|
val1, val2, val3 := Must3(1, 2, 3, nil)
|
|
is.Equal(1, val1)
|
|
is.Equal(2, val2)
|
|
is.Equal(3, val3)
|
|
is.Panics(func() {
|
|
Must3(1, 2, 3, errors.New("something went wrong"))
|
|
})
|
|
is.NotPanics(func() {
|
|
Must3(1, 2, 3, nil)
|
|
})
|
|
}
|
|
|
|
{
|
|
val1, val2, val3, val4 := Must4(1, 2, 3, 4, nil)
|
|
is.Equal(1, val1)
|
|
is.Equal(2, val2)
|
|
is.Equal(3, val3)
|
|
is.Equal(4, val4)
|
|
is.Panics(func() {
|
|
Must4(1, 2, 3, 4, errors.New("something went wrong"))
|
|
})
|
|
is.NotPanics(func() {
|
|
Must4(1, 2, 3, 4, nil)
|
|
})
|
|
}
|
|
|
|
{
|
|
val1, val2, val3, val4, val5 := Must5(1, 2, 3, 4, 5, nil)
|
|
is.Equal(1, val1)
|
|
is.Equal(2, val2)
|
|
is.Equal(3, val3)
|
|
is.Equal(4, val4)
|
|
is.Equal(5, val5)
|
|
is.Panics(func() {
|
|
Must5(1, 2, 3, 4, 5, errors.New("something went wrong"))
|
|
})
|
|
is.NotPanics(func() {
|
|
Must5(1, 2, 3, 4, 5, nil)
|
|
})
|
|
}
|
|
|
|
{
|
|
val1, val2, val3, val4, val5, val6 := Must6(1, 2, 3, 4, 5, 6, nil)
|
|
is.Equal(1, val1)
|
|
is.Equal(2, val2)
|
|
is.Equal(3, val3)
|
|
is.Equal(4, val4)
|
|
is.Equal(5, val5)
|
|
is.Equal(6, val6)
|
|
is.Panics(func() {
|
|
Must6(1, 2, 3, 4, 5, 6, errors.New("something went wrong"))
|
|
})
|
|
is.NotPanics(func() {
|
|
Must6(1, 2, 3, 4, 5, 6, nil)
|
|
})
|
|
}
|
|
|
|
{
|
|
is.Panics(func() {
|
|
Must0(false)
|
|
})
|
|
is.NotPanics(func() {
|
|
Must0(true)
|
|
})
|
|
}
|
|
|
|
{
|
|
val1 := Must1(1, true)
|
|
is.Equal(1, val1)
|
|
is.Panics(func() {
|
|
Must1(1, false)
|
|
})
|
|
}
|
|
|
|
{
|
|
val1, val2 := Must2(1, 2, true)
|
|
is.Equal(1, val1)
|
|
is.Equal(2, val2)
|
|
is.Panics(func() {
|
|
Must2(1, 2, false)
|
|
})
|
|
}
|
|
|
|
{
|
|
val1, val2, val3 := Must3(1, 2, 3, true)
|
|
is.Equal(1, val1)
|
|
is.Equal(2, val2)
|
|
is.Equal(3, val3)
|
|
is.Panics(func() {
|
|
Must3(1, 2, 3, false)
|
|
})
|
|
}
|
|
|
|
{
|
|
val1, val2, val3, val4 := Must4(1, 2, 3, 4, true)
|
|
is.Equal(1, val1)
|
|
is.Equal(2, val2)
|
|
is.Equal(3, val3)
|
|
is.Equal(4, val4)
|
|
is.Panics(func() {
|
|
Must4(1, 2, 3, 4, false)
|
|
})
|
|
}
|
|
|
|
{
|
|
val1, val2, val3, val4, val5 := Must5(1, 2, 3, 4, 5, true)
|
|
is.Equal(1, val1)
|
|
is.Equal(2, val2)
|
|
is.Equal(3, val3)
|
|
is.Equal(4, val4)
|
|
is.Equal(5, val5)
|
|
is.Panics(func() {
|
|
Must5(1, 2, 3, 4, 5, false)
|
|
})
|
|
}
|
|
|
|
{
|
|
val1, val2, val3, val4, val5, val6 := Must6(1, 2, 3, 4, 5, 6, true)
|
|
is.Equal(1, val1)
|
|
is.Equal(2, val2)
|
|
is.Equal(3, val3)
|
|
is.Equal(4, val4)
|
|
is.Equal(5, val5)
|
|
is.Equal(6, val6)
|
|
is.Panics(func() {
|
|
Must6(1, 2, 3, 4, 5, 6, false)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestTry(t *testing.T) {
|
|
is := assert.New(t)
|
|
|
|
is.False(Try(func() error {
|
|
panic("error")
|
|
}))
|
|
is.True(Try(func() error {
|
|
return nil
|
|
}))
|
|
is.False(Try(func() error {
|
|
return fmt.Errorf("fail")
|
|
}))
|
|
}
|
|
|
|
func TestTryX(t *testing.T) {
|
|
is := assert.New(t)
|
|
|
|
is.True(Try2(func() (string, error) {
|
|
return "", nil
|
|
}))
|
|
|
|
is.True(Try3(func() (string, string, error) {
|
|
return "", "", nil
|
|
}))
|
|
|
|
is.True(Try4(func() (string, string, string, error) {
|
|
return "", "", "", nil
|
|
}))
|
|
|
|
is.True(Try5(func() (string, string, string, string, error) {
|
|
return "", "", "", "", nil
|
|
}))
|
|
|
|
is.True(Try6(func() (string, string, string, string, string, error) {
|
|
return "", "", "", "", "", nil
|
|
}))
|
|
|
|
is.False(Try2(func() (string, error) {
|
|
panic("error")
|
|
}))
|
|
|
|
is.False(Try3(func() (string, string, error) {
|
|
panic("error")
|
|
}))
|
|
|
|
is.False(Try4(func() (string, string, string, error) {
|
|
panic("error")
|
|
}))
|
|
|
|
is.False(Try5(func() (string, string, string, string, error) {
|
|
panic("error")
|
|
}))
|
|
|
|
is.False(Try6(func() (string, string, string, string, string, error) {
|
|
panic("error")
|
|
}))
|
|
|
|
is.False(Try2(func() (string, error) {
|
|
return "", errors.New("foo")
|
|
}))
|
|
|
|
is.False(Try3(func() (string, string, error) {
|
|
return "", "", errors.New("foo")
|
|
}))
|
|
|
|
is.False(Try4(func() (string, string, string, error) {
|
|
return "", "", "", errors.New("foo")
|
|
}))
|
|
|
|
is.False(Try5(func() (string, string, string, string, error) {
|
|
return "", "", "", "", errors.New("foo")
|
|
}))
|
|
|
|
is.False(Try6(func() (string, string, string, string, string, error) {
|
|
return "", "", "", "", "", errors.New("foo")
|
|
}))
|
|
}
|
|
|
|
func TestTryWithErrorValue(t *testing.T) {
|
|
is := assert.New(t)
|
|
|
|
err, ok := TryWithErrorValue(func() error {
|
|
panic("error")
|
|
})
|
|
is.False(ok)
|
|
is.Equal("error", err)
|
|
|
|
err, ok = TryWithErrorValue(func() error {
|
|
return nil
|
|
})
|
|
is.True(ok)
|
|
is.Equal(nil, err)
|
|
}
|
|
|
|
func TestTryCatch(t *testing.T) {
|
|
is := assert.New(t)
|
|
|
|
caught := false
|
|
TryCatch(func() error {
|
|
panic("error")
|
|
}, func() {
|
|
//error was caught
|
|
caught = true
|
|
})
|
|
is.True(caught)
|
|
|
|
caught = false
|
|
TryCatch(func() error {
|
|
return nil
|
|
}, func() {
|
|
//no error to be caught
|
|
caught = true
|
|
})
|
|
is.False(caught)
|
|
}
|
|
|
|
func TestTryCatchWithErrorValue(t *testing.T) {
|
|
is := assert.New(t)
|
|
|
|
caught := false
|
|
TryCatchWithErrorValue(func() error {
|
|
panic("error")
|
|
}, func(val any) {
|
|
//error was caught
|
|
caught = val == "error"
|
|
})
|
|
is.True(caught)
|
|
|
|
caught = false
|
|
TryCatchWithErrorValue(func() error {
|
|
return nil
|
|
}, func(val any) {
|
|
//no error to be caught
|
|
caught = true
|
|
})
|
|
is.False(caught)
|
|
}
|