fn: add FindIdx function
This commit is contained in:
2 files changed
+48
-2
No files matched your search
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user