問題タブ [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.

0 投票する
1 に答える
157 参照

haskell - 無限リストを生成するジェネリックシリーズ

このフラグメントと smallcheck-1.0.1

それからこれ

明らかに無限のリストを生成します。

smallcheck-0.6.1 が [A,B] のみを生成するまで同等だと思っていたものは、私が期待するものです。

これは smallcheck シリーズの意図的な変更ですか? もしそうなら、0.6.1 の動作に戻す簡単な方法はありますか?

これを実証するためのコンパイル可能なプログラムがここにあります: http://hpaste.org/83927

0 投票する
3 に答える
1845 参照

testing - Haskell で SmallCheck を使用するには?

SmallCheckを使用して Haskell プログラムをテストしようとしていますが、ライブラリを使用して独自のデータ型をテストする方法がわかりません。どうやら、Test.SmallCheck.Seriesを使用する必要があります。ただし、そのドキュメントは非常に紛らわしいと思います。クックブック スタイルのソリューションと、論理 (モナディック?) 構造のわかりやすい説明の両方に興味があります。ここに私が持っているいくつかの質問があります(すべて関連しています):

  • データ型が の場合、有効な値が (または) であることをどのdata Person = SnowWhite | Dwarf Integerように説明すればよいですか? 複雑なデータ構造とコンストラクターがあり、コンストラクターを使用して Person のリストから FairyTale を作成したい場合はどうすればよいですか?smallCheckDwarf 1Dwarf 7SnowWhiteFairyTalemakeTale :: [Person] -> FairyTalesmallCheck

    のような関数へquickCheckの賢明なアプリケーションを使用することで、手を汚すことなくこのような作業を行うことができました 。これを行う方法がわかりませんでした(説明してください!)。Control.Monad.liftMmakeTalesmallCheck

  • Serialタイプ、などの関係は何Seriesですか?

  • (オプション) のポイントはcoSeries何ですか? Positiveからの型を使用するにはどうすればよいSmallCheck.Seriesですか?

  • (オプション) smallCheck のコンテキストで、モナド式であるべきものの背後にあるロジックとは何か、および単なる通常の関数とは何かについての説明をいただければ幸いです。

を使用するためのイントロ/チュートリアルがある場合はsmallCheck、リンクをいただければ幸いです。どうもありがとうございました!

更新:私が見つけた最も有用で読みやすいドキュメントsmallCheck、この論文 (PDF)であることを付け加えておきます。最初に見ただけでは、私の質問に対する答えが見つかりませんでした。チュートリアルというより説得力のある広告です。

更新 2:の種類やその他の場所にIdentity現れる奇妙なことについての質問を別の質問に移動しました。Test.SmallCheck.list

0 投票する
2 に答える
178 参照

testing - SmallCheck でモナド プロパティを使用するにはどうすればよいですか?

IO を使用する SmallCheck プロパティを作成したいのですが、どうすればよいかわかりません。具体的には、 のインスタンスであるプロパティを記述して、に(またはに)Testable IO Boolフィードできるようにすることが目標です。残念ながら、私が思いつくことができる最高のものは次のとおりです。smallChecktestPropertytest-framework

Testable IO (IO Bool)ではなくのインスタンスであるため、これは機能しませんが、Testable IO Bool機能するように書き換える方法がわかりません。

どんな助けでも大歓迎です。

0 投票する
2 に答える
404 参照

haskell - smallcheck で `Depth` パラメータをどの程度制御する必要がありますか?

私は を使った最初の実際の作業を行っていsmallcheckますが、パラメーターの使用方法について少し混乱していDepthます。その前に、私が何smallcheckのために使っているかを述べさせてください。

仕事では、社内データベースの前に単純な Web サービスを構築しています。Web サービスはいくつかのクエリを実行し、JSON にシリアル化されたクエリ結果で応答します。私が現在取り組んでいるのは、クエリの結果を表すオブジェクトが与えられた場合、このオブジェクトが期待される JSON を生成するという保証です。例えば:

次のような JSON を生成する必要があります。

これは にとって理想的なタスクのように見えましたsmallcheck。私はこれを次のように定式化しました。

フレームワークのデフォルトのsmallcheck深さtastyは 5 です。これにより、まだ終了していないテスト実行が行われます。smallcheckにはchangeDepthchangeDepth1関数があるため、これらを使用して、テストが常に適切な時間内に実行されるようにすることができます。changeDepth (const 3)だけど、こうするとどこかズレてる気がして仕方ないのでは?たとえば、コマンド ライン オプションを変更してテストを実行するだけでは、より長いテスト (おそらく一晩中) を実行することはできなくなりました。一方、 を使用changeDepth (- 2)した場合でも、テストがどのように実行されるかを仮定しているように感じます! おそらく、5 のグローバル テスト深さはn秒で実行され、適切と思われる深さを調整するのは各プロパティ次第であると仮定するのが最善でしょうか?

のこのより実用的な側面について、フィードバックをお待ちしておりますsmallcheck

0 投票する
1 に答える
255 参照

testing - SmallCheck: 型クラス Serial の型インスタンスの作成

smallcheck プロパティ ベースのテスト ライブラリを Tasty と組み合わせて使用​​する方法を見つけようとしています。

複数フィールドのレコード型で問題が発生しました: Serialtypeclass の 4 つ以上のフィールド メンバーを持つレコード型を作成するにはどうすればよいですか?

これが通常の方法だと思います:

これは機能し、もちろん「Test1」は失敗します。consNただし、関数は最大 4 つのパラメータを取るように定義されているため、このアプローチは 4 つを超えるフィールドを持つレコード タイプでは機能しません。関数が宣言されているモジュールへのリンクは次のとおりです。Test.SmallCheck.Series

次のような場合:

それを追加する方法は何Serialですか?私はこのようなジェネリックを使用してみました:

しかし、ghc は次のメッセージで上記の例を受け入れることを拒否します:

よろしくお願いします!

ジュール

0 投票する
1 に答える
211 参照

haskell - symdiff は何をしますか (haskell で)

undefinedプログラムをコンパイルしてテストするために何かを記入することになっています。ここで symdiff が何をすることになっているのかよくわからないので、 に何を入力すればよいかわかりませんundefined。誰かが私に何を挿入できるか、ヒントを教えてもらえますかundefined?

ところで、コードを ghci 7.6.3 でコンパイルしようとすると、エラーが発生します。 Could not find module 'Test.SmallCheck.Series'どうすれば修正できますか?

コードは次のとおりです。

ありがとう、それはとても役に立ちました!これはどうですか:

これらの行は正しいですか(???の行を除いて、私はすでに考えています)

これは最後の行で機能します。 S y' -> symdiff x' y'

0 投票する
2 に答える
71 参照

haskell - SmallCheck は不変条件を満たすデータを生成します

SmallCheck を使用してコードをテストしたいと考えています。int のペアの任意のリストを生成することができましたが、それは私の型に含める必要があるものではありません。リストは一連の範囲を表し、[1,3),[4,6)としてエンコード/保存され[(1,3),(4,6)]ます。

これらは、私の範囲の正規化された形式の不変条件です:

これを SmallCheck に伝えて、不変条件を満たしていないために破棄する大量の値が生成されないようにしたいと思いますが、おそらくそれは不可能です。

不変条件を満たすリストを生成するにはどうすればよいですか?