fn: add FindIdx function

This commit is contained in:
Keagan McClelland committed 2024-07-10 15:34:57 -07:00
1 parent 5902aa5159
commit c3603ccf96
2 files changed
+48 -2

No files matched your search

+34
View File
@@ -340,3 +340,37 @@ func TestPropForEachConcOutperformsMapWhenExpensive(t *testing.T) {
t.Fatal(err)
}
}
func TestPropFindIdxFindIdentity(t *testing.T) {
f := func(div, mod uint8, s []uint8) bool {
if div == 0 || div == 1 {
return true
}
pred := func(i uint8) bool {
return i%div == mod
}
foundIdx := FindIdx(pred, s)
// onlyVal :: Option[T2[A, B]] -> Option[B]
onlyVal := MapOption(func(t2 T2[int, uint8]) uint8 {
return t2.Second()
})
valuesEqual := Find(pred, s) == onlyVal(foundIdx)
idxGetsVal := ElimOption(
foundIdx,
func() bool { return true },
func(t2 T2[int, uint8]) bool {
return s[t2.First()] == t2.Second()
})
return valuesEqual && idxGetsVal
}
if err := quick.Check(f, nil); err != nil {
t.Fatal(err)
}
}