mirror of
https://github.com/IBM/fp-go.git
synced 2025-08-10 22:31:32 +02:00
fix: add ioeither
Signed-off-by: Dr. Carsten Leue <carsten.leue@de.ibm.com>
This commit is contained in:
58
io/io_test.go
Normal file
58
io/io_test.go
Normal file
@@ -0,0 +1,58 @@
|
||||
package io
|
||||
|
||||
import (
|
||||
"math/rand"
|
||||
"testing"
|
||||
|
||||
F "github.com/ibm/fp-go/function"
|
||||
"github.com/ibm/fp-go/internal/utils"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestMap(t *testing.T) {
|
||||
assert.Equal(t, 2, F.Pipe1(Of(1), Map(utils.Double))())
|
||||
}
|
||||
|
||||
func TestChain(t *testing.T) {
|
||||
f := func(n int) IO[int] {
|
||||
return Of(n * 2)
|
||||
}
|
||||
assert.Equal(t, 2, F.Pipe1(Of(1), Chain(f))())
|
||||
}
|
||||
|
||||
func TestAp(t *testing.T) {
|
||||
assert.Equal(t, 2, F.Pipe1(Of(utils.Double), Ap[int, int](Of(1)))())
|
||||
}
|
||||
|
||||
func TestFlatten(t *testing.T) {
|
||||
assert.Equal(t, 1, F.Pipe1(Of(Of(1)), Flatten[int])())
|
||||
}
|
||||
|
||||
func TestMemoize(t *testing.T) {
|
||||
data := Memoize(MakeIO(rand.Int))
|
||||
|
||||
value1 := data()
|
||||
value2 := data()
|
||||
|
||||
assert.Equal(t, value1, value2)
|
||||
}
|
||||
|
||||
func TestApFirst(t *testing.T) {
|
||||
|
||||
x := F.Pipe1(
|
||||
Of("a"),
|
||||
ApFirst[string](Of("b")),
|
||||
)
|
||||
|
||||
assert.Equal(t, "a", x())
|
||||
}
|
||||
|
||||
func TestApSecond(t *testing.T) {
|
||||
|
||||
x := F.Pipe1(
|
||||
Of("a"),
|
||||
ApSecond[string](Of("b")),
|
||||
)
|
||||
|
||||
assert.Equal(t, "b", x())
|
||||
}
|
Reference in New Issue
Block a user