2010-03-25 8 views
10

La fonction verboseCheck de QuickCheck 1 semble être absent dans QuickCheck 2 (ou du moins, je ne le trouve pas). Existe-t-il un autre moyen de montrer quelles valeurs sont utilisées lors des tests?verboseCheck dans QuickCheck 2?

Répondre

2

On dirait verbose (et d'autres verbose - fonctions) ont été retournés à QuickCheck dans la version 2.4

1

J'ai regardé les sources, et il semble que Args ont été remaniée avec, configEvery n'est plus là, et donc vous n'êtes pas en mesure d'imprimer toutes les valeurs de test sans patcher les sources QuichCheck

4

Oui, cela semble être une régression de fonctionnalité par rapport à QuickCheck 1.

Toutefois, vous pouvez contourner ce problème en annotant vos propriétés avec une instruction Debug.Trace.trace. Quelque chose comme:

import Debug.Trace 

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

La fonction sample est également utile:

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" 
.... 

De cette façon, il est facile de jouer avec vos instances arbitraires, et assurez-vous qu'ils génèrent ce que vous pensez qu'ils génèrent.

+1

Oui, il est utile. –

3

Je suis heureux avec

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