2023-07-07 22:31:06 +02:00
|
|
|
package testing
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"testing"
|
|
|
|
|
2023-07-18 15:57:54 +02:00
|
|
|
EQ "github.com/IBM/fp-go/eq"
|
2023-07-07 22:31:06 +02:00
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestMonadLaws(t *testing.T) {
|
|
|
|
// some comparison
|
|
|
|
eqa := EQ.FromStrictEquals[bool]()
|
|
|
|
eqb := EQ.FromStrictEquals[int]()
|
|
|
|
eqc := EQ.FromStrictEquals[string]()
|
|
|
|
|
|
|
|
ab := func(a bool) int {
|
|
|
|
if a {
|
|
|
|
return 1
|
|
|
|
}
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
bc := func(b int) string {
|
|
|
|
return fmt.Sprintf("value %d", b)
|
|
|
|
}
|
|
|
|
|
|
|
|
laws := AssertLaws(t, eqa, eqb, eqc, ab, bc)
|
|
|
|
|
|
|
|
assert.True(t, laws(true))
|
|
|
|
assert.True(t, laws(false))
|
|
|
|
}
|