TZTesterを更に更に改良する (C++0x編)
まず、生成されるソースコードを載せておきます。
//(大量の#includeは略) using namespace std; //(typedefも略) //(マクロも略) class P8XGraphBuilder { public: int solve( vector <int> _scores ) { } }; // BEGIN CUT HERE #include "/home/wistery/.topcoder/P8XGraphBuilder_solve.h" #include <initializer_list> int main(int argc, char **argv){ bool verbose_ = false; int runno_ = -1; if (argc >= 2) if(!strcmp(argv[1], "-v")) verbose_ = true; if (argc == 2 && !verbose_) runno_ = atoi(argv[1]); else if (argc == 3 && verbose_) runno_ = atoi(argv[2]); CASE(0){ vector <int> scores = {1, 3, 0}; int _ = 8; RUN_TEST(); } CASE(1){ vector <int> scores = {0, 0, 0, 10}; int _ = 10; RUN_TEST(); } CASE(2){ vector <int> scores = {1, 2, 3, 4, 5, 6}; int _ = 12; RUN_TEST(); } CASE(3){ vector <int> scores = {5, 0, 0}; int _ = 15; RUN_TEST(); } CASE(4){ vector <int> scores = {1, 3, 2, 5, 3, 7, 5}; int _ = 20; RUN_TEST(); } notify_memory_usage(); } // END CUT HERE
テストコードの部分が従来より更にすっきりしています。
なぜすっきりしたのか
使い方
- TZTester.jarを新しいTZTester.jarで置き換えます。
- テンプレートを少し書き換えます。テンプレートの例を示します。
//(#includeは略) using namespace std; //(typedefは略) //(マクロは略) class $CLASSNAME$ { public: $RC$ $METHODNAME$( $METHODPARMS$ ) { } }; $TESTCODE$
- コンパイル時に -std=c++0xオプションを付けます。(古いコンパイラだと、initializer_listに対応してないかもしれません。(http://gcc.gnu.org/projects/cxx0x.html によると、g++の場合4.4から対応しているようです。))
ダウンロード
https://github.com/wistery-k/tztester_w
ここからダウンロードできます。
makeしてください。make installは自分用なので、使わないでください。手動でcpしてください。
謝辞
http://d.hatena.ne.jp/sabottenda/20110702/1309610241
のコードを元にしました。ありがとうございます。