verboseCheck в QuickCheck 2?


Функция verboseCheck из QuickCheck 1, похоже, отсутствует в QuickCheck 2 (или, по крайней мере, я не могу ее найти). Есть ли другой способ показать, какие значения используются во время тестирования?

5   10  

5 ответов:

Похоже, что verbose (и другие verbose - функции) были возвращены обратно в QuickCheck в версии 2.4

Функция sample также полезна:

Prelude Test.QuickCheck
ghci> sample (arbitrary :: Gen String)
""
")\223"
"(\227\&5F"
"\DC1"
"\136'\140\180\FS"
"K\DC2\NUL\CAN\253Q"
"\DC4\f\184&.\DC3\159\&1I\160j\147"
....
Таким образом, легко играть с произвольными экземплярами и убедиться, что они генерируют то, что вы думаете, что они генерируют.

Да, это, по-видимому, функциональная Регрессия по отношению к QuickCheck 1.

Вы можете обойти это, аннотируя свои свойства с помощью отладки.След.тем не менее, заявление трассировки. Что-то вроде:

import Debug.Trace

prop_eq xs = traceShow xs $ 
   xs == reverse (reverse xs)

Я был счастлив с

import Debug.Trace
verboseCheck prop = quickCheck (\input -> traceShow input $ prop input)

Я посмотрел на источники, и кажется, что Args были рефакторированы, configEvery больше нет, и поэтому вы не можете печатать все тестовые значения без исправления источников QuichCheck