問題タブ [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.
haskell - Cabal のクイックチェック バージョンのインストールに関する問題
Ubuntu 10.04 に cabal 経由で quickcheck 2 をインストールしようとしています。私が何をしようとしても、私はいつも次のようになります。
これは、ghc6 と cabal-install apt パッケージのみがインストールされたクリーンな Ubuntu 10.04 上にあります。quickcheck をインストールする前に、cabal 経由でバイナリ パッケージをインストールしました。
2.1.1.1 が利用可能であると表示されますが、1.2.0.0 しかインストールされません。実際に最新バージョンをインストールできないのはなぜですか?
haskell - クイックチェックで失敗したテストプロパティの理由を表示するにはどうすればよいですか?
QuickCheckを介してテストするときに、プロパティテストが失敗した理由を表示するためのベストプラクティスは何ですか?
たとえば、次のことを考慮してください。
その場合、セッションは次のようになります。
ただし、デバッグの場合は、quickCheckの偽造可能なレポートの一部として失敗の理由を示すと非常に便利です。
私はこのようにそれをハックしました:
それを行うためのより良い/より良いまたはより迅速な方法はありますか?
haskell - 素数を生成してQuickCheckを使用する
バックグラウンド
楽しみのために、RSAを使用した暗号化の背後にある基本的な考え方をテストできるクイックチェック用のプロパティを作成しようとしています。
- 2つの異なる素数、
p
およびを選択しq
ます。 - させて
N = p*q
e
互いに素な数です(p-1)(q-1)
(実際には、高速エンコーディングの場合、eは通常3です)d
モジュロのモジュラ逆数ですe
(p-1)(q-1)
x
そのようなすべてのために1 < x < N
、それは常に真実です(x^e)^d = x modulo N
言い換えると、x
は「メッセージ」であり、それをe
3乗modに上げることN
はメッセージを「エンコード」する行為であり、エンコードされたメッセージをd
3乗modに上げることN
はそれを「デコード」する行為です。
x = 1
(このプロパティは、独自の暗号化である場合にも自明に当てはまります)
コード
これまでにコーディングしたメソッドは次のとおりです。
(モジュラ逆数の実装に感謝します、グーグルとランダムブログ)
質問
問題は明らかなはずです。プロパティには条件が多すぎて、まったく使用できない状態になっています。quickCheck prop_rsa
ghciで呼び出そうとすると、端末がハングしました。
そこで、QuickCheckのマニュアルを少し調べてみたところ、次のようになっています。
プロパティは次の形式をとることがあります
forAll <generator> $ \<pattern> -> <property>
<generator>
素数のを作成するにはどうすればよいですか?または他の制約があるので、quickCheck
失敗した状態の束をふるいにかける必要はありませんか?
その他の一般的なアドバイス(特にQuickCheckに関する)は大歓迎です。
haskell - QuickCheck:他の任意の観点から任意のインスタンスを定義する
QuickCheck 1を使用していますが、次のデータ型があります。
Arbitrary
ここで、のインスタンスを定義して、およびの既存のジェネレーターを使用しC
てC
値が生成されるようにします。私はこれをすることになった:A
B
これは、固定数の値を明示的に生成するためA
にB
必要ですか、それとも既存のものArbitraries
を新しいものに結合するためのより良い方法がありますか?
haskell - 表示-QuickCheckプロパティで使用される関数
1つ以上の関数を入力として受け取るQuickCheckプロパティを作成しようとしています。物事を単純にするために、関数の合成が連続する関数の適用と同等であることを確認するためのプロパティと、手っ取り早いテストドライバーを検討してください。
残念ながら、Show
QuickCheckが失敗の原因となった入力を報告できるようにプロパティへの入力を実装する必要があるため、これはコンパイルされませんがShow
、関数の実装はありません。
私はShow
関数のために自分の何もしないインスタンスを書いてみました...
...コンパイルしますが、警告をトリガーし-Wall
ます...
...これを行うにはもっと正しい方法があると思います。
私の腸は答えがTest.QuickCheck.Function
モジュールにあると私に言います、しかしそれは文書化されていません、そして私はそこにあるものが何のためにあるのか、それがどのように使われるのかをタイプシグネチャーを見ただけでは理解できません。
haskell - パッケージコードによって提供されるHaskell型クラスインスタンスをどのようにオーバーライドしますか?
QuickCheckテストケースを含む古いHaskellコードがいくつかあります。QuickCheckの新しいバージョン(2.4.0.1にアップグレードしたばかり)には、Arbitrary Word8
およびその他の型クラスインスタンスが含まれています。これらは、Test.QuickCheck.Arbitraryの古い2.0.xバージョンには存在しませんでした。
一般的な意味では便利ですが、パッケージで提供されるArbitrary Word8
ジェネレーターは、テストスイートで使用したいものではありません。
上記のコードは、コンパイル時に重複インスタンス宣言エラーを引き起こします。このコードを取り出してデフォルトのジェネレーターで処理することはできますが、これを解決する適切な方法を知りたいです。
私が検討した(ただしテストされていない)1つの可能な解決策は、Word8
を使用したエイリアシングnewtype
です。それはソース全体で多くの変更を引き起こすので、よりクリーンな方法があることを望んでいます。
編集:以下のコメントで述べられているように、受け入れられた答えは非常にクリーンで実装が簡単でした:
haskell - 隠しパッケージQuickCheck-1.2.0.0のメンバーです、hsファイルの読み込み方法
クイックチェックをインストールし、
再度インストールします cabal install QuickCheck-1.2.0.0
再度ロードするとエラーが発生します
モジュールTest.QuickCheck.Batch':
It is a member of the hidden package
QuickCheck-1.2.0.0' が見つかりませんでした。
隠しパッケージですが、どうすればいいですか?
ghc -o tryprog hello.hs -package QuickCheck-1.2.0.0 : -package QuickCheck-1.2.0.0 を満たすことができません (詳細については -v を使用してください)
このエラー以外に、パッケージ quickcheck-1.2.0.0 で .hs ファイルをロードする方法を教えてください。
この質問に 50 ポイントを追加しました
この読み込みの問題について、あなたの助けを心からお願いします!!
haskell - quickCheck prop_xxx を起動する関数の書き方
QuickCheck v1 を使用しています。以下は、以下のように定義された単純な prop_xxx です。
これは GHCi で正しくテストできます:
ただし、次のような関数で呼び出しをラップしようとしたとき:
エラーが報告されました:
のようなものを提供しましょうか
どうもありがとう。
-- ラリー
php - PHPでのプロパティベースのテスト?
さまざまな機能ベースの言語には、プロパティ ベースのテストを可能にするツール ( Quickcheck など) があります。
PHPでプロパティベースのテストを行うにはどうすればよいですか?
PHP メソッドの in および output プロパティを指定して、カバレッジ テストを実行できるようにしたいと考えています。
haskell - 継続的インテグレーションを備えたHUnit/QuickCheck
Bambooのような継続的インテグレーションシステムがテスト結果の詳細なレポートを実行できるようにするHUnitまたはQuickCheckの拡張機能はありますか?
これまでのところ、私の最善のアイデアは、ビルドスクリプトの一部としてテストをトリガーし、ゼロ以外の終了コードで失敗するテストに依存することです。これは、テストが失敗したときに注意を引くのに効果的ですが、ビルドの失敗とテストの失敗を混同し、問題の原因を特定するためにコンソール出力をたどる必要があります。
これが現在のツールで最適なオプションである場合、私の考えは、 JUnit XML形式で出力を生成するHUnitのレポートモジュールを作成し、JavaプロジェクトについてレポートするかのようにCIツールをそのモジュールに向けることです。ただし、これはややハックなように思われるので、既存のオプションと新しい開発の方向性の両方について考えていただければ幸いです。