woj-server/pkg/utils/try_test.go
2024-01-06 14:42:35 +08:00

58 lines
1.4 KiB
Go

package utils
import "testing"
func TestTry(t *testing.T) {
t.Run("First Try", func(t *testing.T) {
val, err := NewTry[int, bool](true).
Try(func() (int, bool) { return 1, true }).
Or(func() (int, bool) { return 2, false }).
Or(func() (int, bool) { return 3, true }).
Or(func() (int, bool) { return 4, false }).
Done()
if val != 1 && err != true {
t.Error("Try failed")
}
})
t.Run("Middle Or", func(t *testing.T) {
val, err := NewTry[int, bool](true).
Try(func() (int, bool) { return 1, false }).
Or(func() (int, bool) { return 2, false }).
Or(func() (int, bool) { return 3, true }).
Or(func() (int, bool) { return 4, false }).
Done()
if val != 3 && err != true {
t.Error("Try failed")
}
})
t.Run("Last Or", func(t *testing.T) {
val, err := NewTry[int, bool](true).
Try(func() (int, bool) { return 1, false }).
Or(func() (int, bool) { return 2, false }).
Or(func() (int, bool) { return 3, false }).
Or(func() (int, bool) { return 4, true }).
Done()
if val != 4 && err != true {
t.Error("Try failed")
}
})
t.Run("Nothing", func(t *testing.T) {
val, err := NewTry[int, bool](true).
Try(func() (int, bool) { return 1, false }).
Or(func() (int, bool) { return 2, false }).
Or(func() (int, bool) { return 3, false }).
Or(func() (int, bool) { return 4, false }).
Done()
if val != 4 && err != false {
t.Error("Try failed")
}
})
}