bar_1

contents_map

ラベル OOo Basic の投稿を表示しています。 すべての投稿を表示
ラベル OOo Basic の投稿を表示しています。 すべての投稿を表示

2014年3月7日金曜日

VBAUnit の OOo Basic への移植

LBAUnit::Helper


VBAUnit (.NET版) を、OOo Basic に移植しようとしてみた。正確には、OpenOffice ではなく LibreOffice にだけども。

LBAUnit-Helper

ところが、OOo Basic には、Eval がそもそもないらしい
おぉ、なんてこった! なので断念した。

ユニットテスト (一般に xUnit) のフレームワークを作るには、その言語にはメタプログラミングの機能が必要とされる。

メタプログラミングには:


  • eval

  • self

  • lambda

といった機能を言語レベルでサポートしていることが望ましい。とくに、ひとつめの Eval は必須。

ところが、OOo Basic (OpenOffice.org Basic) は、これらのどれもサポートしてないんだな。まぁ、Python や Java, JavaScript でやってくれという話なんだろう……。

いちおう、OOo Basic にも TypeName() といった関数や MRI などリフレクション/イントロスペクションの拡張機能はあるにはあるのだけど、Eval がないとどうにもならない; 例えば、テストケースやメソッドを集めて実行する、という部分には、「コードを書くコード」「コードを実行するコード」を Basic がサポートしている必要がある。

クラスやインタフェースの定義、インスタンス変数、プロパティ、オブジェクトの生成をBasicのみでできることは、確認できたのだけどね……。

なので、あきらめた _(」 L、ソ、)_。

assert関数 と結果表示をするヘルパー関数は作ったので、まぁ、なんかに使えると思ったら使ってください (xba 形式でエクスポートしてあります):