以下の内容はhttps://m-hiyama.hatenablog.com/entry/20120914/1347607609より取得しました。


イヌネコ、今日だいぶ賢くなった

今日のお昼くらいに書いた1つ前の記事「妖精さん、小人さん、イヌネコ、自動テスト」において、全自動テストであるイヌネコテストのカバレッジが3割弱だと書きました。

その後、Kuwataさんが基本コマンド(スクリプトではありません)に手を加えてくれて、カバレッジはだいぶ改善しました。515個のコマンド中474個が実行可能(つまりテスト可能)だとイヌネコが言っています。カバレッジは9割超(92%)まで伸びました。

inu-nekoモジュールをそのまま貼り付けておきます。

/** 
 * イヌネコテスト 
 */
module inu-neko;

/** コマンド */
type Command = reif:CommandSummary;

/** イヌネコでも実行可能なコマンドの特徴付け 
* この型はフィルタリング条件として使う
*/
type InuNekoExecutable = {
 /* 型パラメータは空 */
 "typeParams": [],
 
 /* 実装されている */
 "implemented": ("python" | "catyscript"),

 /* interactive ではない */
 "annotations": {
   "interactive": false?,
   * : any?
 }?,

 *: any?
};

/** イヌネコでも実行可能かを調べる (述語コマンド) */
command can-exec :: Command -> (@OK Command | @NG Command) {
  case {
   InuNekoExecutable => @OK pass,
   *                 => @NG pass,
  }
};

/** アプリケーションに含まれるすべてのコマンドを列挙して、イヌネコでも実行可能かを調べる 
 */
command list-and-check-commands [string appName] :: void -> [(@OK Command | @NG Command)*] {
 %1 > appName;
 sreif:list-modules /*--rec そのうち必要 */ %appName |
 each {
   $.name > modName;
   [%appName, "::", %modName] | text:concat > modPath | dump/*確認用*/;
   sreif:list-commands /*--rec そのうち必要 */ %modPath |
   each {
    can-exec
   }
 } | list:concat
};

次のようにすると、[全コマンド数, テスト可能コマンド数] が表示されます。

caty:root> inu-neko:list-and-check-commands global | [list:length, take{pass}|list:length]
[
    197,
    173
]
caty:root> 



以上の内容はhttps://m-hiyama.hatenablog.com/entry/20120914/1347607609より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14