問題タブ [smallcheck]
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 - 無限リストを生成するジェネリックシリーズ
このフラグメントと smallcheck-1.0.1
それからこれ
明らかに無限のリストを生成します。
smallcheck-0.6.1 が [A,B] のみを生成するまで同等だと思っていたものは、私が期待するものです。
これは smallcheck シリーズの意図的な変更ですか? もしそうなら、0.6.1 の動作に戻す簡単な方法はありますか?
これを実証するためのコンパイル可能なプログラムがここにあります: http://hpaste.org/83927
testing - Haskell で SmallCheck を使用するには?
SmallCheckを使用して Haskell プログラムをテストしようとしていますが、ライブラリを使用して独自のデータ型をテストする方法がわかりません。どうやら、Test.SmallCheck.Seriesを使用する必要があります。ただし、そのドキュメントは非常に紛らわしいと思います。クックブック スタイルのソリューションと、論理 (モナディック?) 構造のわかりやすい説明の両方に興味があります。ここに私が持っているいくつかの質問があります(すべて関連しています):
データ型が の場合、有効な値が (または) であることをどの
data Person = SnowWhite | Dwarf Integer
ように説明すればよいですか? 複雑なデータ構造とコンストラクターがあり、コンストラクターを使用して Person のリストから FairyTale を作成したい場合はどうすればよいですか?smallCheck
Dwarf 1
Dwarf 7
SnowWhite
FairyTale
makeTale :: [Person] -> FairyTale
smallCheck
のような関数へ
quickCheck
の賢明なアプリケーションを使用することで、手を汚すことなくこのような作業を行うことができました 。これを行う方法がわかりませんでした(説明してください!)。Control.Monad.liftM
makeTale
smallCheck
Serial
タイプ、などの関係は何Series
ですか?(オプション) のポイントは
coSeries
何ですか?Positive
からの型を使用するにはどうすればよいSmallCheck.Series
ですか?(オプション) smallCheck のコンテキストで、モナド式であるべきものの背後にあるロジックとは何か、および単なる通常の関数とは何かについての説明をいただければ幸いです。
を使用するためのイントロ/チュートリアルがある場合はsmallCheck
、リンクをいただければ幸いです。どうもありがとうございました!
更新:私が見つけた最も有用で読みやすいドキュメントsmallCheck
は、この論文 (PDF)であることを付け加えておきます。最初に見ただけでは、私の質問に対する答えが見つかりませんでした。チュートリアルというより説得力のある広告です。
更新 2:の種類やその他の場所にIdentity
現れる奇妙なことについての質問を別の質問に移動しました。Test.SmallCheck.list
testing - SmallCheck でモナド プロパティを使用するにはどうすればよいですか?
IO を使用する SmallCheck プロパティを作成したいのですが、どうすればよいかわかりません。具体的には、 のインスタンスであるプロパティを記述して、に(またはに)Testable IO Bool
フィードできるようにすることが目標です。残念ながら、私が思いつくことができる最高のものは次のとおりです。smallCheck
testProperty
test-framework
Testable IO (IO Bool)
ではなくのインスタンスであるため、これは機能しませんが、Testable IO Bool
機能するように書き換える方法がわかりません。
どんな助けでも大歓迎です。
haskell - smallcheck で `Depth` パラメータをどの程度制御する必要がありますか?
私は を使った最初の実際の作業を行っていsmallcheck
ますが、パラメーターの使用方法について少し混乱していDepth
ます。その前に、私が何smallcheck
のために使っているかを述べさせてください。
仕事では、社内データベースの前に単純な Web サービスを構築しています。Web サービスはいくつかのクエリを実行し、JSON にシリアル化されたクエリ結果で応答します。私が現在取り組んでいるのは、クエリの結果を表すオブジェクトが与えられた場合、このオブジェクトが期待される JSON を生成するという保証です。例えば:
次のような JSON を生成する必要があります。
これは にとって理想的なタスクのように見えましたsmallcheck
。私はこれを次のように定式化しました。
フレームワークのデフォルトのsmallcheck
深さtasty
は 5 です。これにより、まだ終了していないテスト実行が行われます。smallcheck
にはchangeDepth
とchangeDepth1
関数があるため、これらを使用して、テストが常に適切な時間内に実行されるようにすることができます。changeDepth (const 3)
だけど、こうするとどこかズレてる気がして仕方ないのでは?たとえば、コマンド ライン オプションを変更してテストを実行するだけでは、より長いテスト (おそらく一晩中) を実行することはできなくなりました。一方、 を使用changeDepth (- 2)
した場合でも、テストがどのように実行されるかを仮定しているように感じます! おそらく、5 のグローバル テスト深さはn秒で実行され、適切と思われる深さを調整するのは各プロパティ次第であると仮定するのが最善でしょうか?
のこのより実用的な側面について、フィードバックをお待ちしておりますsmallcheck
。
testing - SmallCheck: 型クラス Serial の型インスタンスの作成
smallcheck プロパティ ベースのテスト ライブラリを Tasty と組み合わせて使用する方法を見つけようとしています。
複数フィールドのレコード型で問題が発生しました: Serial
typeclass の 4 つ以上のフィールド メンバーを持つレコード型を作成するにはどうすればよいですか?
これが通常の方法だと思います:
これは機能し、もちろん「Test1」は失敗します。consN
ただし、関数は最大 4 つのパラメータを取るように定義されているため、このアプローチは 4 つを超えるフィールドを持つレコード タイプでは機能しません。関数が宣言されているモジュールへのリンクは次のとおりです。Test.SmallCheck.Series
次のような場合:
それを追加する方法は何Serial
ですか?私はこのようなジェネリックを使用してみました:
しかし、ghc は次のメッセージで上記の例を受け入れることを拒否します:
よろしくお願いします!
ジュール
haskell - symdiff は何をしますか (haskell で)
undefined
プログラムをコンパイルしてテストするために何かを記入することになっています。ここで symdiff が何をすることになっているのかよくわからないので、 に何を入力すればよいかわかりませんundefined
。誰かが私に何を挿入できるか、ヒントを教えてもらえますかundefined
?
ところで、コードを ghci 7.6.3 でコンパイルしようとすると、エラーが発生します。
Could not find module 'Test.SmallCheck.Series'
どうすれば修正できますか?
コードは次のとおりです。
ありがとう、それはとても役に立ちました!これはどうですか:
これらの行は正しいですか(???の行を除いて、私はすでに考えています)
これは最後の行で機能します。
S y' -> symdiff x' y'
haskell - SmallCheck は不変条件を満たすデータを生成します
SmallCheck を使用してコードをテストしたいと考えています。int のペアの任意のリストを生成することができましたが、それは私の型に含める必要があるものではありません。リストは一連の範囲を表し、[1,3),[4,6)
としてエンコード/保存され[(1,3),(4,6)]
ます。
これらは、私の範囲の正規化された形式の不変条件です:
これを SmallCheck に伝えて、不変条件を満たしていないために破棄する大量の値が生成されないようにしたいと思いますが、おそらくそれは不可能です。
不変条件を満たすリストを生成するにはどうすればよいですか?