星期四, 四月 01, 2010

如何使用shunit2來做unit test

如何使用shunit2

(1) 下載 shunit2-2.1.3.tgz
tar zxvf shunit2-2.1.3.tgz


(2) 建議…
在.bashrc中,加上一個alias
alias get_shunit2='cp XXXX/shunit2-2.1.3/src/shell/shunit2 ./'

在 /tmp目錄下做實驗:
get_shunit2 // 這樣可以把需要的shunit2 拷貝到/tmp資料夾下。


(3) 寫一個test suite , 名稱是 test.sh
//////內容/////
#! /bin/sh

testEquality()
{
assertEquals 1 1
}

# load shunit2
. ./shunit2
/////////////

(4) sh test.sh

使用gtest來做Unit Test

非常簡單、非常好上手。

(1) 下載gtest-1.4.0.tar.bz2
tar jxvf gtest-1.4.0.tar.bz2

(2) ./configure
make
sudo make install
ldconfig // 因為它有灌library

(3) 準備要被測的檔案
for example: humorless.h
///////// 內容 ///////////
class Sample
{
public:
int return_100()
{
return 100;
}
};
/////////////////////////
(4) 準備好test suite
for example: tester.cpp
///////////// 內容 ///////////
#include
#include "humorless.h"

TEST(Sample, return_100) {
Sample c;

// EXPECT_EQ() evaluates its arguments exactly once, so they
// can have side effects.

EXPECT_EQ(0, c.return_100());
EXPECT_EQ(1, c.return_100());
EXPECT_EQ(2, c.return_100());
}

int main(int argc, char **argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
//////////////////////////

(5) g++ -o tester tester.cpp -lgtest
./tester
// 記得要去link 啊…

星期日, 三月 28, 2010

道路駕駛課

2010年3月28日,道路駕駛班的課程,相當的有趣。教學內容重點放在市區和巷道。

(1) 市區行駛,快慢車道變換。
快車道和慢車道之間,有一個大大的安全島,切過去時,要注意後方來車,而且要慢慢地先卡位,再儘快開進去。

(2) 市區幹道左轉
在台北市的主要幹道,例如忠孝、敦化這種大路和大路之間的交岔口, 除非有設計好的交通號誌,基本上,是禁止左轉的。如果要左轉,但是又找不到迴轉道,其實是有替代方案的:通常在這種不能左轉的路口之後,第一個可以右轉的巷子,都是單行道。這個單行道的設計,往往就是可以連續做三個右轉。( 有的有例外,是四個右轉+ 一個左轉 )

// 媽的,我在台北市住了這麼久,終於明白,為什麼會有這麼多的單行道,這是因為它本身有迴轉道的功能嘛!

(3) 巷道之無號誌十字路口穿越
先開一半,確定左邊的來車不會撞上,
再開一半,確定右邊的來車也不會撞上。

(4) 巷道之無號誌十字路口左轉
概念上,也是慢慢開,跟(3)差不多

(5) 違反交通規則的大迴轉 ( 趕時間時使用… )
當附近的車不多時,先把車偏右開,取得空間,方向盤左打到底,做180度大迴轉。

///
然而,有趣的一件事是:
今天,我跟我姊講到這個開法時,她跟我說:
「喔,靠靠靠靠…
我坐過的那些車,那些開車的男人,常常都是遇到不能左轉時,就先罵,『怎麼不能左轉的路這麼多』,然後,先右轉,再 (雙黃線) 180度大迴轉 。還有,他們也常常罵,『單行道真是很多,這些管路的人不知道在想些什麼!』」

附註:其實我覺得我的這位教練,教的很用心,教練的連絡方式:
許家豪
0916-971248