58 lines
1.4 KiB
Go
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")
|
|
}
|
|
})
|
|
}
|