コンテキスト私は、次の機能を持たせて与えられた機能のために複数の任意のパラメータ
を生成するQuickCheckを使用した:
-- instance PrivKey RSA.PrivateKey RSA.PublicKey where...
genRSA :: Gen RSA.PrivateKey
genRSAMessage :: Gen BS.ByteString
main = do
quickCheck . verbose
$ forAll genRSA
$ forAll genRSAMessage prop_SignAndVerify
それ:私のような何かをしたいと思います
prop_SignAndVerify :: (PrivKey a b) => Blind a -> BS.ByteString -> Bool
prop_SignAndVerify bsk msg = case verify pk msg sig of
Left e -> error e
Right b -> b
where
sk = getBlind bsk
pk = toPublic sk
sig = case sign sk msg of
Left e -> error e
Right s -> s
を私は、明示的なジェネレータを使用して、Blind a
とBS.ByteString
の任意の値を生成したいと考えていますprop_SignAndVerify
のメートル。
上記のコードは、しかし、動作しない、機能forAll
が署名を入力したため:
forAll :: (Show a, Testable prop) => Gen a -> (a -> prop) -> Property
この機能はProperty
を返す、(a -> prop)
に発電機及びリンゴ生成された任意の値を実行します。このProperty
は部分的に適用することはできません。基本的な機能を隠します。だから私の質問は、私はprop_SignAndVerify
のパラメータよりgenRSA
とgenRSAMessage
をどのように使用できるか、である
forAll' :: (Show a, Testable prop) => Gen a -> (a -> prop) -> prop
質問
:
私のようなものになるだろう私たちが仕事をする上でのために必要なものだと思います、あるいは別の方法がありますか?
おかげ