sci

最果て風呂

テストの方法

過去に何度かやってしまっているのだけれど、mto の辞書作成時に辞書形式から逸脱した記述をしてしまい、Internal Server Error を生じさせてしまった。この種の間違いを減らすにはどうすれば良いのだろう?TDD とか?

テストはどうやって書けばいいのだろうか?想定している辞書の形になっているかどうかを判定して、それから逸脱していたらエラーとすれば良いのかな?数え上げ方式だと if でのチェックが多くなってしまうけど、とりあえずの形あるものを作るにはそれでいいのだろう。遅くて使いものにならないのであればその時に考えよう。

まずは想定している辞書形式を羅列してみる。基本形は「単語 /単語」というもので、単語と単語を空白+スラッシュ「 /」で区切っている。コメントは行頭の;「^;」と空白+;「 ;」以降になる。空行は入っていてもパース時に無視されるので考えない。

以上をまとめると OK な形は下記となる。つまりこれ以外は不正なものとなる。

  1. 単語 /単語
  2. ;ほげほげ
  3. 単語 /単語 ;ほげほげ

今までの経験上、間違え易いのはセミコロン。半角「;」でなくではなく全角「;」を使ってしまった。それと「単語/ 単語」や「単語/単語」のように区切り文字が不正なもの。それ以外にもあったかな?

処理にどのスクリプト言語を使うのかはさておき正規表現の形にしてみる。と思ったけど、処理系によって微妙に違うのだったね。辞書ツールシェルスクリプトを使っているので、これに追記することにしよう。具体的には grep を使う。

まずは行頭からのコメント文を差っ引いてから区切り文字のチェックをする。これで不正なものがあれば出力だ。う〜ん、全角セミコロンのチェックが難しい。今は入っていないけれど、単語に顔文字があった場合にこれも検出されてしまう。

間違って使ってしまいそうな全角セミコロンの形を順次チェックすればいいのかな……。