[Gauche-devel-jp] Re: SCM_RETURN(SCM_UNDEFINED) ?

アーカイブの一覧に戻る

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







Gauche-devel-jp メーリングリストの案内
アーカイブの一覧に戻る