rapidcheck
rapidcheck copied to clipboard
Add generator for numeric ranges
Possibly generating an std::pair of begin/end indexes or begin/size. Think of some clever shrinking heuristics as well.
This is what I've been using along with JUCE's Ranges:
template <typename T>
struct rc::Arbitrary<juce::Range<T>>
{
static Gen<juce::Range<T>> arbitrary()
{
using Tup = std::tuple<T, T>;
return gen::map (
gen::suchThat (gen::arbitrary<Tup>(), [] (Tup t) { return std::get<0> (t) <= std::get<1> (t); }),
[] (Tup t) {
return juce::Range<T> {std::get<0> (t), std::get<1> (t)};
});
}
};