問題タブ [quickcheck]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
testing - Haskell の quickCheck 関数の定数シードを設定する方法
「quickCheck prop_xyz」を実行するたびに、新しいランダム シードが使用されます。常に同じランダム シードを使用するように QuickCheck を強制するにはどうすればよいですか?
ありがとう!
haskell - QuickCheck で生成された奇妙な文字列
入力ファイルと目的の解析を並行して生成する QuickCheck スクリプトを使用してテストする小さな Parsec プログラムがあります。
私のテストは通常 100 個のテストを正常に実行しますが、何かを何気なくテストしていると、突然、非常に大きな (600,000 文字) カウンター例で失敗しました。エラーの原因がわかったとき、私は非常に混乱しました。
私のプログラムではalphaNum、アンダースコア、および空白しか使用していませんが、QuickCheckは変数名に対して上記の文字列を生成したようです。
上記のシーケンスが発生する理由がわかりましたか? どこかのオーバーフローエラーではないでしょうか? または、QuickCheck が一時的にメモリ不足になり、デバッグ メッセージを書き込んでいますか?
haskell - How do I constrain QuickCheck when using type synonyms?
I am using QuickCheck
to run arbitrary test cases on my code. However, in one portion of my code I have the type synonym:
I also have a few functions that accept a number of Vector
s as input. However, all of these functions require that the Vector
s be of the same length.
Is there a way to constrain QuickCheck
so that it only generates lists of length n?
haskell - Data.MeldableHeap プライオリティ キューの Haskell QuickCheck ジェネレーターを作成する方法
学習課題として、 のジェネレーターを書きたいと思いData.MeldableHeap
ます。私はそれを次のようにパターン化しました:
私のコード:
しかし、これは上記を取得します:
ご案内をお願いします。
更新:あなたの助けを借りて私はそれを得ました:
実際のテストはもっと良いかもしれませんが、重要な点は、重要な例で QuickCheck を使用する方法を学ぶことでした。ありがとう、H
haskell - QuickCheck は再帰的なデータ構造 (バラの木) の調査を断念しました。
任意のツリーが与えられた場合、シューベルトの番号付けを使用して、そのツリーに対してサブタイプの関係を構築できます。
whereType
は元のラベルをネストし、さらに子/親 (またはサブタイプ) チェックを実行するために必要なデータを提供します。Schubert Numbering では、2 つの Int パラメータで十分です。
これは二項述語につながります
ここで、QuickCheck を使用して、これが実際にやりたいことを実行することをテストしたいと思います。ただし、次のプロパティは機能しません。QuickCheck があきらめるだけだからです。
への再帰呼び出しsubtypeSanity
、つまり に渡すリストの末尾を省略したconjoin
場合、プロパティは問題なく実行されますが、ツリーのルート ノードだけがテストされます。QuickCheck が新しいテスト ケースの生成をあきらめずに、データ構造に再帰的に降りるにはどうすればよいですか?
必要に応じて、シューベルト階層を構築するコードと のArbitrary
インスタンスTree (Type a)
を提供して、完全に実行可能な例を提供できますが、それはかなりの量のコードになります。私は、QuickCheck を「取得」していないだけでなく、ここで間違った方法で使用していると確信しています。
編集: 残念ながら、sized
関数はここで問題を解決していないようです。最終的に同じ結果になります(J. Abrahamsonの回答へのコメントを参照してください)。
編集 II: 再帰的なステップを回避し、conjoin
. ツリー内のすべてのノードのリストを作成し、それらの単一ノード プロパティ (最初から正常に機能していました) をテストします。
木のインスタンスを微調整してArbitrary
も機能しませんでした。私がまだ使用している任意のインスタンスは次のとおりです。
問題は「今のところ解決した」と考えていますが、誰かが再帰的なステップやconjoin
QuickCheck をあきらめさせた理由を説明してくれたら (「0 個の」テストのみを通過した後)、感謝します。
testing - test-framework/quickcheck/cabal: 「cabal test」で testfunction にオプションを渡す
次のコマンドでプロジェクトをビルドおよびテストするために cabal を使用しています。
フレームワークとして、testing-framework ( https://batterseapower.github.io/test-framework/ ) を使用します。すべてが機能しますが、特定のプロパティに合わせて生成されたデータをフィルタリングする必要があるため、QuickCheck テストの数はデフォルトで 50 に設定されています。
次のようなものを渡す可能性はありますか
cabalを介してテスト実行可能ファイルに?私は次のようなことを試しました
しかし、これまでのところ運がありません。これを達成する可能性はありますか?
よろしくお願いします!
ジュール
haskell - Haskell クイックチェック - 印刷可能な文字列のみを生成する方法
文字列をエンコード/デコードする一連の簡単なデモ プログラムがあり、それらに対していくつかのquickCheckテストを生成したいが、テストを印刷可能な文字列のみに限定したい。生成されたテスト ケースと拒否されたテスト ケースが多すぎるため、ガードの使用は遅すぎて失敗するため、このドメイン用の安全なジェネレーターを作成したいと考えています。
私が見た this への参照は、(1) Charの独自のArbitraryインスタンスを定義し、それを使用して文字列の印刷可能な文字のみを生成するか、(2) 関数自体をnewtypeでラップしてArbitraryを記述する必要があることを示しています。そのためのインスタンス。
しかし、(1) これを実行しようとすると失敗します。Test.QuickCheck にこれの定義があるためです。これを行うにはどうすればよいでしょうか。新しい型のsafeCharジェネレーターを作成し、テストされた関数へのアダプターを再度作成する必要があります。 ? (これに関する RWH 本のセクションでは、この DIY Char 定義を推奨するのは時代遅れであると述べています。)
(2) を実行しようとすると、ローカライズされた単純な (しかし失敗する) テスト命題にガードを追加するか、新しいラッパーと関連するジェネレーターを作成することができますが、これは面倒に思えます。
明らかにこれは単純で (!)、すべてのツールが提供されていますが、誰かがこれが正しい分析であるかどうかをアドバイスし、これを行う最善の方法の例を挙げてもらえますか?