2011-07-13 6 views
1

私はTclについて質問がありますが、私たちはTclを使ってcおよびC++アプリケーション用のテストケースを作成しています。私はいくつかのTclテストケースがあることを知りました:tclテストに関する質問

if {0} { #START:HELLO1 
//some code here 
}#END:HELLO1 

if {0} { #START:HELLO2 
//some code here 
}#END:HELLO2 

if {0} { #START:HELLO3 
//some code here 
}#END:HELLO3 

これらのコードはどのように機能しますか? #START:と#END:何を意味するのですか?何故彼らは次のようなインデックスを持っていますか:

HELLO1 HELLO2 HELLO3 

誰でも私を助けてくれますか?

+0

多分ファイルは他のプログラムTclより? – wallyk

+0

CETP、CETPにSTARTとENDがありますか? –

+0

アプリがインタラクティブな場合は、Expectの本も手に入れたいと思うでしょう... – bitbucket

答えて

1

これはTclの言葉では非常に奇妙なテストです。彼らは(余分なセミコロンで)このように読んだ場合:

if {0} { #START:HELLO1 
//some code here 
};#END:HELLO1 

を次に彼らは文字通り(何もしないコードをブロックすることだろう。Tclは同じように、そのためのコードを生成しようとしませんCまたはC++コンパイラはif(0){...}のために多くを行う可能性は低いですが、あなたが持っているバージョンは単なる構文エラーです。中括弧は空白以外のものに続けてはいけません(置換を拡張する特殊な{*}構文でない限り)。

doATest "the test name" { 
    // Whatever makes the body of the test, in whatever language 
} 

doATestは、いくつかのロジックに基づいてテストを無視するかもしれませんが、全体的なスクリプトは忘れ、次のようになります。私は、テストコードをよりこのように見えるように期待する、と述べた

(Tcl自身の組み込みテストハーネス - tcltestパッケージ - テストを実行する条件や期待される結果のようなものを制御するためのいくつかの特別なパラメータでこのパターンに従います)

1

ハッシュはコメントを開始しますが、注意してください。いくつかの非常に奇妙なのTclコードである

http://wiki.tcl.tk/1669

1

。独自の(?)テストツールの構文に似ています。テストツールの名前について他のヒントを教えてもらえますか?

一般に、#はコメントを開始しますが(それより少し複雑ですが)、if {0}は、次のコードブロックが実行されることを効果的に防ぎます。たぶんあなたのテストツールは、STARTとENDの間のコードを抽出し、テストモードのときにそれを実行し、そうでなければコードは無視されますか?しかし、}#(すなわち:2つの間にスペースがない)は通常、構文エラーを投げます。テストコードがどのようになっているかを正確に表示していますか?