できました。
前の記事でStreamingAPIからとってきたresponseTextをconsole.logに出力しつつActivityMonitorをみていたらメモリ使用量が10分弱で100MBも増えたのでこれはまずいと思ったのと、どうでもいいコードを簡単にテストするなにかがなかった(知らない)ので作りました。機能は非常にしょぼいです。setupとかteardownとかそんな概念はなかった。
テストするサンプルのコードを書いておきます。Githubに上がっているデフォのものと同様です。
Smoothy.test(function(t){
t.log('equal?');
t.assert('str, str ok').equal('str','str');
t.assert('num, num ok').equal(0, 0);
t.assert('str0, num0 fail').equal('0',0);
t.assert('1, true fail').equal(1, true);
t.log('NaN?');
t.assert('assert nan str ok').nan('string');
t.assert('assert nan 6 fail').nan(6);
t.assert('assert not nan 6 ok').not().nan(6);
t.assert('assert not nan str fail').not().nan('string');
t.log('type');
t.assert('string ok').type('str','string');
t.assert('string fail').not().type('str','string');
t.assert('number ok').type(0, 'number');
t.assert('object ok').type({}, 'object');
t.assert('function ok').type(function(){}, 'function');
t.log('null');
t.assert('null ok').nil(null);
t.assert('str fail').nil('str');
t.assert('undefined fail').nil(undefined);
});
Smoothy
というオブジェクトがテスト用のいろいろを詰め込んだやつで、Smoothy.test()
にfunction(t){}
みたいな関数を突っ込んでその中でテストします。Smoothy.test
は関数のレジスタなので複数書いても大丈夫です。多分。window.onload
時に実行されます。
関数の中でt.assert('description').nan('string')
みたいな感じで書きます。descriptionには適当に説明を書いてあげてください。画面に出力されます。あまり長いと切れます。
assertionのメソッドはlib/assertion.js
に入ってるのでそれをみてください。現状
- equal
- nan
- type
- nil
の4種類しか書いていません。メソッドをチェーンさせて.not()
とか前置すると結果が反転します。
lib/assertion.js
を例にならって編集してやるとメソッドが追加できます。追加するだけじゃだめでcombineする必要があります。Google Closure Compilerを使うと簡単です。ここから落してきて/usr/bin/
直下に置いてlib/
でmake
するとcombineされたやつとminifyされたやつがでてきます。makefileを編集すれば/usr/bin/
以外でも動きます。
assertionだけじゃなくてconsole.logっぽく出力もできます。t.log('string')
とやるとテキストを出力します。こちらはassertのdescriptionとは違って長くても複数行にわたって表示されます。
本体が相変わらずなにも考えていないコードなのはご愛嬌です。