エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

2009-10-01から1ヶ月間の記事一覧

その6:アサーションの解説(3)

例外を扱うアサーションマクロです。 Fatal assertionNonfatal assertionVerifies ASSERT_THROW(statement, exception_type) EXPECT_THROW(statement, exception_type) statement throws an exception of the given type ASSERT_ANY_THROW(statement) EXPECT…

その5:前処理・後処理のあるテスト

各々のテストで同様の前処理や後処理がある場合、テストケース単位で設定することができます。 まず、::testing::Testの派生クラスとしてテストケース名のクラスを定義します。そしてこのクラスに前処理が必要であればSetUp関数を、後処理が必要であればTear…

「数学ガール/ゲーデルの不完全性定理」発売

MATSUMOTO Eiji on Twitter: "フライング!?#mathgirl http://f.hatena.ne.jp/twitter/20091024161354" …というわけで。発売予定日を明後日にひかえた今日、入手致しました。この書店では、レジの正面に話題の本を集めた棚があるんですが、そこに既刊の2巻…

その4:アサーションの解説(2)

残りのアサーションマクロのうちの、2つのグループの解説です。 無条件の成功と失敗 ここでのマクロは値や式を評価せず、直接に成功あるいは失敗を生成します。 SUCCEED() 成功を生成するマクロです。ただし、このマクロが評価されたとしてもテストが成功し…

上司のタイプ

上司に限らない話かもしれない。この1年半で3回上司がかわって、つまり4人の上司の下で仕事をすることになった。 今週、その4人目の上司と面談があって、そこで感じたこと。 上司には少なくとも4つのタイプがある。 話をするのをためらわせる上司 話を…

boost::dynamic_bitsetから部分ビット列を切り出す、のつづき

C++

昨日のコード、少し短くなることに気がついた。 #include <iostream> #include <string> #include <boost/dynamic_bitset.hpp> int main(int, char* []) { boost::dynamic_bitset<> b1(std::string("10110011100011110000")); std::cout << b1 << std::endl; std::string s; boost::to_string(b1, s); boo</boost/dynamic_bitset.hpp></string></iostream>…

boost::dynamic_bitsetから部分ビット列を切り出す

C++

boost::dynamic_bitsetをさわったついでに、もとのビット列から部分ビット列を切り出す方法を探してみたんですが、どうも見つかりません。イテレータがあればこんな感じで書けると思うのですが。 // 注意:これはイメージです。コンパイルできません。 // も…

その3:実行時オプションと環境変数(1)

主立った実行時オプションについて説明します。 実行時オプションには(--gtest_list_testsをのぞいて)対応する環境変数があります。環境変数に値を設定しておくと、実行時オプションを指定したときと同じ効果が得られます。 オプション 環境変数 機能 --gt…

ひさしぶりにワークショップに参加

今日は午後から「最高の居場所フォーラム」に参加してきました。久々のイベント参加です。 ただ。誘われるままに参加を決めたはいいものの、ワークショップでなにをするかは知らされていなくて。こんなに身体を動かすことになるとは思ってませんでした。さっ…

会社の仕事場

会社の仕事場は、仕事をするには、一番不適な場所だと、思った。 少なくとも、いまの会社の、いまの仕事場は。

std::basic_stringで戯れる

C++

std::vectorの連結で演算子が使えない、という話題に対して。 どういう話かというと、こういうことです。 #include <iostream> #include <vector> #include <algorithm> #include <iterator> int main(int, char* []) { std::vector<int> v1; std::vector<int> v2; v1.push_back(10); v1.push_back(20); v1.pus</int></int></iterator></algorithm></vector></iostream>…

その2:アサーションの解説(1)

二種類のアサーション googletestのアサーションには大きく二種類のアサーションマクロが用意されています。 一つは評価が失敗した時点でテストを終了する、名前がASSERT_で始まるマクロ。もう一つは評価が失敗してもテストを継続する、名前がEXPECT_で始ま…

その1:基本的な使い方

最低限テストとして利用できる基本的な使い方について解説します。応用についてはおいおい。 テストを記述する テストは、関数のように見えるTESTマクロを使って記述します。 TEST(テストケース名, テスト名) { テスト本体 } 個々のテストは特に登録などの手…

その0:googletestについてのまとめ

探すとたくさんの情報があり、ドキュメントの翻訳をされているかたも少なくありませんが、自分で使うためにまとまった形にしておくと便利だと思い立ち、まとめてみることにしました。内容は“GitHub - google/googletest: Google Test”から、ドキュメントとし…

Singleton Template

C++

http://d.hatena.ne.jp/nagoya313/20090930/1254321172を拝見して。これは「『奇妙に再帰したテンプレートパターン』を使うと簡単にできなかったっけ?」と、記憶をたどりながらコードを書いてみた。 #include <iostream> template<typename T> class Singleton { public: static T</typename></iostream>…