2013年2月6日水曜日

iutest v1.3.1 をリリースしました

この間 v1.3.0 をリリースしたばかりですが、 v1.3.1 をリリースしました。

今回の変更点はこちらになります。

  • IUTEST_SKIP() << "message" に対応
  • スキップ時のログ出力を修正
  • コンパイルの通らないテストコードを許可するテスト生成マクロ(*_IGNORE)を追加
スキップ機能周りの機能改善
これまでは、IUTEST_SKIP() したときに
・スキップしたのかどうか
・なぜスキップしたのか
これらがログから解りにくい状態でした。
今回の修正により、以下のようにスキップしたときにメッセージの表示、追加ができるようにしました。
IUTEST(SkipTest, CanSkip)
{
    IUTEST_SKIP() << "test";
    IUTEST_EXPECT_EQ(2, 3);
}

IUTEST(SkipTest, Failed)
{
    IUTEST_EXPECT_EQ(2, 3);
    IUTEST_SKIP();
    IUTEST_EXPECT_EQ(2, 3);
}




構文エラーも無視可能なテストの定義マクロを追加
まず、こちらのコードを御覧ください。
template<typename T>
void f()
{
    int a//; error
}
int main(int, char**)
{
    return 0;
}
あからさまに構文エラーがあるのがわかると思いますが、
こちらのコードは Visual Studio ではコンパイルエラーになりません!
 (C++ Compiler Farm でコンパイルしてみました。)

Visual Studio では使用されていないテンプレート関数はコンパイル対象にならない感じなのですが、 これのせいでいざ使おうと思ったら大量のエラーが・・・なんてことがあったり。

しかし
この挙動を逆手に取れば、なにを書いてもエラーにならない関数が書けるではないですか!
というわけで、IUTEST_TEST_IGNORE マクロを用意しました。
(※ IUTEST_F_IGNORE, IUTEST_P_IGNORE, IUTEST_TYPED_TEST_IGNORE, IUTEST_TYPED_TEST_P_IGNORE もあります。)

IUTEST_TEST_IGNORE(VedningMachineTest, TotalAmount)
{
    // VedningMachine 定義してないけど、こんな感じでテスト書くよ
    VedningMachine vm;
    vm.Insert(100);
    IUTEST_ASSERT_EQ(100, vm.GetTotalAmount());
}

このマクロを使うと、テスト関数にエラーがあってもコンパイルが通ります。
(※Visual Studio のみの機能になります。)

実用性があるのか?
わかりません。

ただ、この前参加した 「2013年はじめのTDD Boot Camp in 大阪」でのデモンストレーション(java)で、
@ignore
と付けただけで、テストが無視されたんですよ!
なんだってー(゚Д゚;)!!って思いました。
それ以外にも、java でのテストのコーディングが非常に軽快で羨ましかった。。。

だから、作りました。
gcc や clang でも同様のテクニックがあれば教えてください m(__)m

次はC言語バージョンの iutest_c v1.1.0 をリリースしたいところなのですが、
とある環境でテストが通っていないため、どうなるかわかりません。
プログラムは難しい~…それではまた~

2013年2月5日火曜日

Visual C++ 6.0 が欲しい

template の部分特殊化が使えない環境として、Visual C++ 6.0 が欲しい!

ただ数万円出してまで欲しいものでもなく、部分特殊化ができないコンパイラならなんでも良いのですが・・・

2013年2月4日月曜日

[Visual Studio] ツールバーにあるソリューション構成コンボボックスの幅を変更

Visual Studio 2012 Express 2012 for Windows Desktop を使い始めて、ツールバーのコンボボックスの幅を広げたいなぁと思ってました。

以前の Visual Studio では変更できたし、VS2012 でも変更できるだろうと思ったのですが、
そもそもカスタマイズをどこでしていたかサッパリ覚えてないし、
検索しても全然ヒットしないし(探し方が下手なだけ)
あーもー!!
って感じだったので、自分用の備忘録として記録しておきます。


手順
  1. 変更したいツールバーの右端にあるオプションから、
    [ボタンの追加または削除(A)] > [カスタマイズ(C)...]を選択すると、カスタマイズダイアログが開きます。
    ([ツール]メニューの[カスタマイズ(C)...]からもダイアログを開けます。)

  2. 変更したいコンボボックスを選択し、[選択したボタンの編集(M)]ボタンを押します。

  3. 編集メニューが出るので、そこで幅を編集します。


できたできた。