問題タブ [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 - 単体テストと Haskell の Cabal の統合の現状は?
単体テストをcabalファイルと統合する方法をグーグルで検索すると、次のいずれかが見つかります
- http://www.haskell.org/haskellwiki/How_to_write_a_Haskell_program HUnit/QuickCheck と Cabal ファイルの統合について説明していないようです
- または、「cabal テストをサポートする Cabal xy を待ちます」のようなメッセージが表示されますが、これに関するドキュメントが見つかりません
今日、cabal を使用してすべての単体テストをどのように実行しますか (たとえば、「cabal ビルド」を行うたびに)?
haskell - HaskellQuickCheck独自の乱数生成
選択した要素が一度だけ選択されるようにQuickCheckを使用してHaskellでジェネレーターを定義する方法を正確に知っている人はいますか?
「Gen(MaybePositive)」ジェネレーターが必要かもしれないことに気づきましたが、もちろんそれは繰り返しで数を生成します。選ばれた番号が繰り返されることなく選ばれるようにしたいと思います。数字が返される場合はちょうど返されたいし、ランダムがすべて使い果たされている場合はGenNothingが返されるようにします。
ありがとう、
マーク
haskell - QuickCheckインスタンスはcabalパッケージのどこに属しますか?
他の開発者に役立つ可能性のあるタイプをエクスポートするcabalパッケージがあります。NBT
私はArbitrary
自分のタイプのインスタンスを定義するのに苦労しました。私の仕事を統合するコードをテストするために他の開発者にインスタンスを提供しないのは残念です。
ただし、インスタンスが邪魔になるような状況は避けたいと思います。おそらく、他の開発者は、インスタンスがどうあるべきかについて異なる考えを持っています。Arbitrary
おそらく、QuickCheckの特定のバージョンに対する私のパッケージの依存関係は、クライアントプロジェクトの依存関係に干渉するか、望ましくない可能性があります。
私の考えは、順不同で、次のとおりです。
Arbitrary
タイプの定義の横にインスタンスを残し、クライアントがインスタンスのシャドウイングまたはQuickCheckバージョン番号のオーバーライドを処理できるようにします。Arbitrary
同じパッケージ内の別のモジュールで、インスタンスを孤立したインスタンスにしますData.NBT.Arbitrary
。パッケージ全体のQuickCheckへの依存は残ります。- インスタンスを完全に別個のパッケージで提供し、
Arbitrary
クライアントプロジェクトの別個のテスト依存関係としてリストできるようにします。 - 条件付きで、
Arbitrary
インスタンスとQuickCheck依存関係の両方をメインパッケージに含めますが、のようなフラグ-ftest
が設定されている場合に限ります。
他のライブラリで使用されているこれらすべての組み合わせを見てきましたが、どれが最適に機能するかについてのコンセンサスは見つかりませんでした。Hackageにアップロードする前に試してみたいと思います。
haskell - メインでクイックチェックを使用する方法
私が書いた二分探索関数のテストを書いています。
ghciでquickCheckを使用するとうまく機能しますが、メインを実行しようとするとエラーが発生します
これがメインでは機能しないのに、ghci では機能するのはなぜですか?
c - va_listに非vararg関数を適用するにはどうすればよいですか?
裏話
QuickCheckユニットテストフレームワークをCに移植しています( GitHubの作業コードを参照してください)。構文は次のようになります。
property
たとえば、テストする関数はどこにありますかbool is_odd(int)
。gen1
、gen2
などは、の入力値を生成する関数ですproperty
。整数を生成するもの、文字を生成するもの、文字列を生成するものなどがあります。
for_all
任意の入力(任意の数の引数、任意のタイプの引数)を持つ関数を受け入れます。for_all
ジェネレーターを実行し、プロパティ関数に渡すテスト値を作成します。たとえば、プロパティis_odd
はタイプが。の関数bool f(int)
です。for_all
生成物を使用して100個のテストケースを作成します。プロパティがそれらのいずれかに対してfalseを返す場合for_all
、問題のあるテストケース値を出力します。それ以外の場合は、for_all
を出力します"SUCCESS"
。
したがって、ジェネレータにアクセスするにfor_all
はを使用する必要があります。va_list
ジェネレーター関数を呼び出したら、それらをプロパティ関数に渡すにはどうすればよいですか?
例
is_odd
タイプがの場合、次の構文を持つbool f(int)
関数をどのように実装しますか?apply()
二次問題
SOを参照してください。
失敗したテストケースの任意の値をインテリジェントに印刷するにはどうすればよいですか?テストケースは、単一の整数、2文字、文字列、または上記の組み合わせの場合がありますか?使用するかどうかは事前にわかりません。
printf("%d %d %d\n", some_int, some_int, some_int);
printf("%c\n" a_character);
printf("%s%s\n", a_string, a_struct_requiring_its_own_printf_function);
haskell - QuickCheck プロパティの重複を避ける
99個のHaskell問題を解いてHaskellを学び始めています。 http://www.haskell.org/haskellwiki/H-99:_Ninety-Nine_Haskell_Problems クイックチェックを使用して、各プログラム/関数のテストを書きたいと思います。
次のコードがあります。
myLast''
、などと書くかもしれませんmyLast'''
。コードを複製してプロパティをクイックチェックすることなく、これらすべてのメソッドをテストできる方法はありますか?
関連する質問: 現在、quickcheck に文字列を使用するように指示しています。さまざまなタイプをランダムに使用してテストする方法はありますか?
haskell - HaskellのQuickCheckを使用して特定の長さのリストを生成する
prop_3aをQuickCheckで実行すると、十分な長さのリストが生成されないため、あきらめます。
ランダムな整数よりも長いリストを生成するジェネレーターを作成するにはどうすればよいですか?
haskell - Djinn / UU / Examples / Equality.hsにexampleをロードする方法は?
その後cabal install Djinn
、QuickCheckを使用すると、実行可能ファイルはになり./.cabal/bin/djinn
ます。
次に、実行可能ファイルをディレクトリにコピーしますDownloads/Djinn/UU/Examples/
Equality.hs
例を実行したい、djinn Equality.hs
コマンドを解析できません
その後./djinn
、:load full path/UU/Examples/Equality.hs
returnはコマンドを解析できません
haskell - ByteStringを使用したHaskell QuickCheck2?
RWH の本には、ByteString のサポートを得るには、以下を追加する必要があると書かれています。
しかし、私の GHC 7.2 with QuickCheck 2.4.1.1 は次のように教えてくれます:
ポインタはありますか?