問題タブ [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 - テスト (tasty-smallcheck) とファイル編成、孤立したインスタンスの回避
ライブラリは src-directory にあり、データ定義 A があります。多くのチュートリアルで示唆されているように、テストに関連するコードは test-directory にあり、テスト ケースを生成するための Serial インスタンスが含まれています。以下のリンクを参照してください。
cabal test
これが孤立したインスタンスであることを警告します。これは避けられませんか、それともライブラリを整理するための確立された規則がありますか?たとえば、シリアルインスタンス定義をデータ A が定義されている場所に移動しますか? 後者は、関連するものを test-directory でテストし続けるのがいいので、少し間違っているように感じます。これが典型的な方法である場合、公開インターフェースでテスト関連のものを公開することをどのように避けることができますか? テストされたすべてのモジュールの「内部」バージョンを作成しますか (公開モジュールと実際のテスト プログラムが使用するもの)? 単体テストの質問で同様のことが提案されました。
それとも、これはまったく問題ですか?関連するコードのテストで孤立したインスタンスを残すことは、どれほど悪い慣習ですか?
haskell - smallcheck "but n did not meet ==>" とは何ですか。
私はこのプロパティを書きました
で実行するとsmallCheck 3 prop_lookupsymbol
、結果は次のようになります。
9000回のテストを失敗なく完了しました。
しかし、9000 は ==> 条件を満たしていませんでした。
プロパティの呼び出しを指していることは知ってい==>
ますが、それはどういう意味did not meet
ですか? これについて心配する必要がありますか?はいの場合、条件を満たさなかったテストを取得するにはどうすればよいですか?
編集
is_ancestor
2 番目のパラメーターが欠けているところに間違いがあったため、プロパティは次のようになりました。
しかし9000から8340は条件を満たさなかった。
上記のタイプと機能の説明は次のとおりです。
SymbolTable
HashMap (Scope,String) Symbol
( unordered-containers パッケージから)の型シノニムですHashMap.Strict
。これは単にコンパイラを構築するためのものです :)。
シンボルにはさまざまなコンストラクター (変数、関数、型など) がありScope
、シンボルが定義されているスコープを定義します。ファイル、クラス、関数、メソッド (クラス内の関数)、インターフェイスがあります。
スコープには名前(ファイル名、クラス名など)と上位スコープがあり、クラスの場合、親スコープ(継承の親)とインターフェーススコープのリスト(クラスが実装する)もあり、インターフェーススコープには親がありますスコープとその上部スコープ。
この関数is_ancestor s1 s2
は、s1 が s2 の上位スコープ (または upper-upperscope または upper-upper-upper...) であるか、親スコープ (または parent-parent または parent-parent-...) であるか、またはいずれかのインターフェース (または親のインターフェースなど)、それis_ancestor s s
は常に真実であることに言及する必要があります。
最後に、名前がでスコープがtrueのlookupsymbol name table scope
シンボルを見つけようとします。その戻り値の型は、見つかったシンボルをシンボルが定義されているスコープと共に返すことを意味します (何も見つからない場合は Nothing)。name
s
is_ancestor s scope
Maybe (Scope,Symbol)
私のプロパティは次のように述べています。任意の名前テーブル スコープについて、lookupsymbol が返されるJust (s,_)
場合は であるs
必要がありますis_ancestor
が、何も返さない場合は、 のスコープに対してはscope
何も返されません。is_ancestor
scope
haskell - 順列を使用して別のインスタンスからシリアルインスタンスを作成する方法 (「任意の順序」のシミュレーション)
SmallCheck関連の質問。
インスタンスを作成した場合Series m [Something]
、それからどのように作成できますSeries m Something
か? このリストは、4 つのシリーズがあり、それらの一連の順列 (別名、任意の順序) を生成したいため、型に表示されたので、使用Data.List.permutations
して、結果としてリストを取得しました。だから私は一連のリストを持っています。シリーズを結合できることは知っていますが、その事実の使い方がわかりません。作成することもできますSeries m (Series m SomethingElse)
が、さらに複雑に見えます。ケースで順列を操作するにはどうすればよいですか? それらをシンプルに変換する方法はSeries m Something
?