Feel Free to raise issues,
or submit PRs.
My main initial goal with InterfaceTesting was to stop errors where
iteratoreltypewas declared on a object, not a Type,
Which is why I started from there.
It tests the interface type contract, when you look for the analogy to Java/C# interfaces.
Which basically means asserting that the right methods exist.
I can certainly see it being reasonable to include some sanity checks.
Something which requires that a typical instance of the item being tested be passed in.
and then checks certain invariants hold.
Though working out what they are is nontrivial.
eltype(first(x))<:eltype(x) seems reasonable for all iterators. possibly even doing something like checking the first up to 100.
x[first(indices(x))] === first(x)
x[last(indices(x))] === last(x)
length(x) = *(size(x)....)
- probably some checks around
Anyway, make some issues/PRs.