For the most part, yes. (I wrote it.) I’ve used QuickCheck in Haskell and Erlang, but have mostly been doing embedded work in C lately, and wanted to keep using that testing approach. C has very different constraints, but I found a way to adapt it which retains the overall workflow. C can’t infer as much, but you specify (via function pointers) how to generate an Arbitrary instance of the property argument(s) from a reproducible random number stream, tactics for shrinking them (T -> int -> T, where the int is used like “return a simpler copy of T using tactic #3”; they’re lazily explored, breadth-first), and theft does the rest.
I put a ton of work into making this pleasant to use, rather than a monstrosity of C preprocessor macros. I’ll have a blog post with more details soon. I only released the library a couple days ago! :)
People in the know: is this similar to Haskell’s QuickCheck?
For the most part, yes. (I wrote it.) I’ve used QuickCheck in Haskell and Erlang, but have mostly been doing embedded work in C lately, and wanted to keep using that testing approach. C has very different constraints, but I found a way to adapt it which retains the overall workflow. C can’t infer as much, but you specify (via function pointers) how to generate an Arbitrary instance of the property argument(s) from a reproducible random number stream, tactics for shrinking them (T -> int -> T, where the int is used like “return a simpler copy of T using tactic #3”; they’re lazily explored, breadth-first), and theft does the rest.
I put a ton of work into making this pleasant to use, rather than a monstrosity of C preprocessor macros. I’ll have a blog post with more details soon. I only released the library a couple days ago! :)