Подтвердить что ты не робот

VerboseCheck в QuickCheck 2?

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

4b9b3361

Ответ 1

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

Ответ 2

Функция 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"
....

Таким образом, легко играть с вашими произвольными экземплярами и следить за тем, чтобы они генерировали то, что, по вашему мнению, они генерируют.

Ответ 3

Да, это похоже на регрессию функциональности в отношении QuickCheck 1.

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

import Debug.Trace

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

Ответ 4

Я был доволен

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

Ответ 5

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