CSV ファイルの形式について
データの保存や転送の簡易な方法としてよく CSV 形式が使用されると思います。
カンマをデータ中に入れる際や、クォートの扱い等、厳密な部分でわりと独自にあつかってしまいがちだと思うのですが RFC に仕様があるのだそうです。
Wikipedia: http://ja.wikipedia.org/wiki/CSV
RFC4180: http://tools.ietf.org/html/rfc4180
僕がプログラミングする際には CSV については、この仕様にそっていこうと思います。
いま主要な形式は XML だと思いますけどね。
GoogleTest を VisualStudio 2008 で使う
GoogleTest は C++ 用のユニットテスト用フレームワークです。複数のプラットフォームに対応していてとても良いのですが、設定で苦労するのはつまらないので、VisualStudio 2008 で使うときのメモとして書いておきます。
ダウンロード
テストの際にはモックがあると便利なので、GoogleMock のアーカイブを取得しました。1.4.0 の時点ではGoogleMock のアーカイブ中に GoogleTest が含まれています。
GoogleMock: http://code.google.com/p/googlemock/
ソリューションの作成
VisualStudio でソリューションを作成します。
GoogleTest プロジェクトの追加
VisualStudio で既存のプロジェクトの追加で展開した GoogleMock のフォルダの下の gtest/msvc/gtest.vcproj、gtest/msvc/gtest_main.vcproj を追加します。※VC ランタイムを DLL とする場合(VisualStudio のデフォルトの設定です) は、gtest/msvc/gtest-md.vcproj、gtest_main-md.vcproj を追加します。
VisualStudio 2008 ではプロジェクトの変換ウィザードが動くので指示にしたがって変換します。
テストケース用プロジェクトの追加
ソリューションにテストケースを作成するプロジェクトを作成するか、既存のプロジェクトを使用します。
テストケース用プロジェクトのプロジェクトの依存関係
テストケース用プロジェクトのプロジェクトの依存関係に、gtest、gtest_main を追加します。
テストケース用プロジェクトのインクルードフォルダを追加
テストケース用のプロジェクトの C++ 全般の追加のインクルードディレクトリに gtest/include フォルダを追加します。 (相対パスにしておくといいかも)
テストケース用プロジェクトの VC ランタイム設定を修正
VC ランタイム設定がデフォルトでは DLL になっているので、GoogleTest の方でスタティックを使用したときには、テストケース用のプロジェクトも合わせてスタティックに変更します。
C/C++ -> コード生成 -> ランタイムライブラリ
テストケースの記述
テストケースを記述します。
こんな感じです。
メイン関数は gtest_main プロジェクトに含まれているので不要です。
#include
TEST( TestCase01, testFunc01 )
{
EXPECT_EQ( 3, 0 );
}