Shiro Kawai
shiro****@lava*****
2005年 4月 18日 (月) 10:37:15 JST
From: Makoto Satoh <makot****@yahoo*****> Subject: [Gauche-devel-jp] Re: SCM_RETURN(SCM_UNDEFINED) ? Date: Mon, 18 Apr 2005 10:30:33 +0900 (JST) > > 副作用を起こす関数のテストは、その副作用が本当に起きたかどうかを > > 調べるのが良いでしょう。 > > なるほど。しかし結構難しいですね。 > > PNGイメージをファイルに書き出すAPIがあるのですが、そのテストを > 書こうとして悩みました。同じことを行うはずのCコードを外部プロセスで > 走らせて、その結果のファイルとテストコード内で作成したファイルが > バイナリとして同じかどうかをcmpで比較したりするのかなあ、とか。 もし生成されるイメージに機種依存性が無いのなら、あらかじめ作って置いた イメージをテストデータに含めておき、それと比較しても良いでしょう。 (比較には、file.utilモジュールのfile-equal?が使えます)。 生成されるイメージに機種依存性がある場合は、厳密にやりたければ テスト用Cプログラムを別に書いて結果を比較、ってことになりますね。 ただ、何から何まで最初から完璧にやる必要も無いと思うので、 > > (define-cproc foo (x::<int> y::<int>) > > (return <void> "foo")) > > すいません、こちらは分かりませんでした。上の条件を満たす場合に、 > 下記のようなdefine-cprocを書くと、Cでfoo(x, y)が実行されて > UNDEFINEDが返るコードがgenstubで生成されるということでしょうか? そうです。UNDEFINEDに限らず、引数・戻り値ともに特別の扱いが 必要でない場合はこのような記法が使えるため、Cコードを書く必要はありません。 --shiro