続き。
■Windows で eclipse ~CUTEインストール編~
■Windows で eclipse ~CUTE入門編~
■Windows で eclipse ~CUTE入門編 Part.2~
■Windows で eclipse ~CUTE実践編(1)~
前回、Add( ) 関数を作ったので、今回は引き続き Sub( ) 関数を作ってみる。
■次のメソド「AplCalc::Sub( )」を実装する
下記仕様とする。
この仕様から考えられるテストパターンを洗い出した。
▼テストプログラムを作成する。
前回作成した [AplCalcTest.cpp] にテスト関数を追加する。
<AplCalcTest.cpp>
既に登録済みなので、なにもしなくてOK。
▼テストプログラムをビルドする。 > コンパイルエラーとなる。
テストプログラムが実装されたことを確認するため、ビルドを実施。
[AplCalc::Sub( )]が実装されていないため、ビルドエラーとなる。
▼製品コードの雛形を作成する。
製品コードが組み込まれたか確認するため、中身を実装せず雛形だけ追加する。
[long Add( long data1, long data2 );]を追加する。
ただし、関数の中身は [return 0;] だけとする。
▼テストプログラムをビルド/実行する。 > テストに失敗(赤)する。
製品コードの雛形が組み込まれたことを確認するため、ビルドとテストを実行する。
コードが組み込まれていないため、当然テストは失敗する。
▼製品コードの中身を実装する。
仕様通り動作する様実装する。
▼テストプログラムをビルド/実行する。 > テストに成功(緑)する。
テストをビルド/実行して、テストが成功する事を確認する。
▼リファクタリングする。
今回は気なる点はなかったので、現状維持とした。
関数2本分のTDDを書いた。
次回は、実際に製品プログラムに仕上げる所を書く。
■Windows で eclipse ~CUTE実践編(1)~
前回、Add( ) 関数を作ったので、今回は引き続き Sub( ) 関数を作ってみる。
■次のメソド「AplCalc::Sub( )」を実装する
前回に引き続き[AplCalc:Sub( )] を作ることにする。
実施手順は前回と同様。
実施手順は前回と同様。
- 手短な設計をする
- テストプログラムを作成する。
- テストプログラムをテスティングフレームワークに登録する。
- テストプログラムをビルドする。 > コンパイルエラーとなる。
- 製品コードの雛形を作成する。
- テストプログラムをビルド/実行する。 > テストに失敗(赤)する。
- 製品コードの中身を実装する。
- テストプログラムをビルド/実行する。 > テストに成功(緑)する。
- リファクタリングする。
- テストプログラムをビルド/実行する。 > テストに成功(緑)する。
下記仕様とする。
- 入力値#1 から 入力値#2 を減算する。(#1 - #2)
- 入力値#1、#2は、正負の値が入力される。
- 減算して [-99999999] より小さい または [99999999]より大きい場合、エラー値を返す。
- エラー値は [0x80000000] とする。
この仕様から考えられるテストパターンを洗い出した。
- 0 - 0 = 0
- 1 - 1 = 0
- 99999999 - 0 = 99999999
- 45000000 - 40000000 = 5000000
- 40000000 - 45000000 = -5000000
- (-45000000) - 40000000 = -85000000
- (-40000000) - 45000000 = -85000000
- 45000000 - (-40000000) = 85000000
- 40000000 - (-45000000) = 85000000
- 0 - 99999999 = -99999999
- (-99999999) - 0 = -99999999
- 0 - (-99999999) = 99999999
- 1 - (-99999998) = 99999999
- (-99999999) - 0 = -99999999
- (-99999998) - 1 = -99999999
- 1 - (-99999999) = 0x80000000
- (-99999999) - 1 = 0x80000000
以上に基づき、開発する。
▼テストプログラムを作成する。
前回作成した [AplCalcTest.cpp] にテスト関数を追加する。
- [testSub( )] 追加
- [ s.push_back(CUTE_SMEMFUN(AplCalcTest, testSub)); ] 追加
<AplCalcTest.cpp>
以上で完了。
#include "cute.h"
#include "ide_listener.h"
#include "cute_runner.h"
#include "AplCalcTest.h"
#include "AplCalc.h"
//-------------------------------------------------------
class AplCalcTest {
public :
AplCalc Cal;
void testAdd( ){
ASSERT_EQUAL( (long)Cal.Add(0,0), (long)0 );
ASSERT_EQUAL( (long)Cal.Add(1,1), (long)2 );
ASSERT_EQUAL( (long)Cal.Add(99999998,1), (long)99999999 );
ASSERT_EQUAL( (long)Cal.Add(1,99999998), (long)99999999 );
ASSERT_EQUAL( (long)Cal.Add(99999999,1), (long)0x80000000 );
ASSERT_EQUAL( (long)Cal.Add(1,99999999), (long)0x80000000 );
ASSERT_EQUAL( (long)Cal.Add(99999999,99999999), (long)0x80000000 );
ASSERT_EQUAL( (long)Cal.Add(45000000,-40000000), (long)5000000 );
ASSERT_EQUAL( (long)Cal.Add(40000000,-45000000), (long)-5000000 );
ASSERT_EQUAL( (long)Cal.Add(99999999,-99999999), (long)0 );
ASSERT_EQUAL( (long)Cal.Add(-99999999,99999999), (long)0 );
ASSERT_EQUAL( (long)Cal.Add(-45000000,40000000), (long)-5000000 );
ASSERT_EQUAL( (long)Cal.Add(-40000000,45000000), (long)5000000 );
ASSERT_EQUAL( (long)Cal.Add(-99999999,-99999999), (long)0x80000000 );
}
void testSub( ) {
ASSERT_EQUAL( (long)Cal.Sub(0,0), (long)0 );
ASSERT_EQUAL( (long)Cal.Sub(1,1), (long)0 );
ASSERT_EQUAL( (long)Cal.Sub(99999999,0), (long)99999999 );
ASSERT_EQUAL( (long)Cal.Sub(45000000,40000000), (long)5000000 );
ASSERT_EQUAL( (long)Cal.Sub(40000000,45000000), (long)-5000000 );
ASSERT_EQUAL( (long)Cal.Sub(-45000000,40000000), (long)-85000000 );
ASSERT_EQUAL( (long)Cal.Sub(-40000000,45000000), (long)-85000000 );
ASSERT_EQUAL( (long)Cal.Sub(45000000,-40000000), (long)85000000 );
ASSERT_EQUAL( (long)Cal.Sub(40000000,-45000000), (long)85000000 );
ASSERT_EQUAL( (long)Cal.Sub(0,99999999), (long)-99999999 );
ASSERT_EQUAL( (long)Cal.Sub(-99999999,0), (long)-99999999 );
ASSERT_EQUAL( (long)Cal.Sub(0,-99999999), (long)99999999 );
ASSERT_EQUAL( (long)Cal.Sub(1,-99999998), (long)99999999 );
ASSERT_EQUAL( (long)Cal.Sub(-99999999,0), (long)-99999999 );
ASSERT_EQUAL( (long)Cal.Sub(-99999998,1), (long)-99999999 );
ASSERT_EQUAL( (long)Cal.Sub(1,-99999999), (long)0x80000000 );
ASSERT_EQUAL( (long)Cal.Sub(-99999999,1), (long)0x80000000 );
}
};
//-------------------------------------------------------
cute::suite make_suite_AplCalcTest(){
cute::suite s;
s.push_back(CUTE_SMEMFUN(AplCalcTest, testAdd)); s.push_back(CUTE_SMEMFUN(AplCalcTest, testSub)); return s;
}
▼テストプログラムをテスティングフレームワークに登録する。
既に登録済みなので、なにもしなくてOK。
▼テストプログラムをビルドする。 > コンパイルエラーとなる。
テストプログラムが実装されたことを確認するため、ビルドを実施。
[AplCalc::Sub( )]が実装されていないため、ビルドエラーとなる。
▼製品コードの雛形を作成する。
製品コードが組み込まれたか確認するため、中身を実装せず雛形だけ追加する。
[long Add( long data1, long data2 );]を追加する。
ただし、関数の中身は [return 0;] だけとする。
▼テストプログラムをビルド/実行する。 > テストに失敗(赤)する。
製品コードの雛形が組み込まれたことを確認するため、ビルドとテストを実行する。
コードが組み込まれていないため、当然テストは失敗する。
- ビルドが正常終了することを確認
- テストが失敗する事を確認
▼製品コードの中身を実装する。
仕様通り動作する様実装する。
▼テストプログラムをビルド/実行する。 > テストに成功(緑)する。
テストをビルド/実行して、テストが成功する事を確認する。
▼リファクタリングする。
今回は気なる点はなかったので、現状維持とした。
関数2本分のTDDを書いた。
次回は、実際に製品プログラムに仕上げる所を書く。
0 件のコメント:
コメントを投稿