diff options
author | Mike Buland <eichlan@xagasoft.com> | 2009-01-07 16:48:35 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2009-01-07 16:48:35 +0000 |
commit | aba7c45c2c69d402d1b6fc427cde5bfa4661a0e1 (patch) | |
tree | 5b3849a8190cdb8742b1f43f4b8bbb43c73ababe /src | |
parent | 45e065bc4fc93731ea9a0543462bc7cf9e6084d7 (diff) | |
download | libbu++-aba7c45c2c69d402d1b6fc427cde5bfa4661a0e1.tar.gz libbu++-aba7c45c2c69d402d1b6fc427cde5bfa4661a0e1.tar.bz2 libbu++-aba7c45c2c69d402d1b6fc427cde5bfa4661a0e1.tar.xz libbu++-aba7c45c2c69d402d1b6fc427cde5bfa4661a0e1.zip |
Corrected a couple of places where std:: classes were being used and shouldn't
have been. Also made the Unit tests actually use expected values, so you can
mark a test as "expected fail" and it'll know. It also prints out cute reports
at the end of each run.
Diffstat (limited to 'src')
-rw-r--r-- | src/hash.h | 5 | ||||
-rw-r--r-- | src/paramproc.cpp | 28 | ||||
-rw-r--r-- | src/paramproc.h | 7 | ||||
-rw-r--r-- | src/unit/fstring.unit | 2 | ||||
-rw-r--r-- | src/unitsuite.cpp | 46 | ||||
-rw-r--r-- | src/unitsuite.h | 5 |
6 files changed, 61 insertions, 32 deletions
@@ -894,11 +894,6 @@ namespace Bu | |||
894 | // nFilled, nDeleted, nCapacity ); | 894 | // nFilled, nDeleted, nCapacity ); |
895 | } | 895 | } |
896 | 896 | ||
897 | virtual std::pair<key,value> getAtPos( uint32_t nPos ) | ||
898 | { | ||
899 | return std::pair<key,value>(aKeys[nPos],aValues[nPos]); | ||
900 | } | ||
901 | |||
902 | virtual key &getKeyAtPos( uint32_t nPos ) | 897 | virtual key &getKeyAtPos( uint32_t nPos ) |
903 | { | 898 | { |
904 | return aKeys[nPos]; | 899 | return aKeys[nPos]; |
diff --git a/src/paramproc.cpp b/src/paramproc.cpp index 7aeb819..819a4da 100644 --- a/src/paramproc.cpp +++ b/src/paramproc.cpp | |||
@@ -121,13 +121,13 @@ Bu::ParamProc::ParamProc() | |||
121 | 121 | ||
122 | Bu::ParamProc::~ParamProc() | 122 | Bu::ParamProc::~ParamProc() |
123 | { | 123 | { |
124 | for( std::list<ArgSpec *>::iterator i = lArg.begin(); | 124 | for( Bu::List<ArgSpec *>::iterator i = lArg.begin(); |
125 | i != lArg.end(); i++ ) | 125 | i != lArg.end(); i++ ) |
126 | { | 126 | { |
127 | delete *i; | 127 | delete *i; |
128 | } | 128 | } |
129 | 129 | ||
130 | for( std::list<Banner *>::iterator i = lBan.begin(); | 130 | for( Bu::List<Banner *>::iterator i = lBan.begin(); |
131 | i != lBan.end(); i++ ) | 131 | i != lBan.end(); i++ ) |
132 | { | 132 | { |
133 | delete *i; | 133 | delete *i; |
@@ -160,12 +160,12 @@ void Bu::ParamProc::addParam( const char *lpWord, char cChar, Proc proc, | |||
160 | if( lpValue ) | 160 | if( lpValue ) |
161 | as->sValue = lpValue; | 161 | as->sValue = lpValue; |
162 | 162 | ||
163 | lArg.push_back( as ); | 163 | lArg.append( as ); |
164 | 164 | ||
165 | if( !lBan.empty() ) | 165 | if( !lBan.isEmpty() ) |
166 | { | 166 | { |
167 | if( lBan.back()->pBefore == NULL ) | 167 | if( lBan.last()->pBefore == NULL ) |
168 | lBan.back()->pBefore = as; | 168 | lBan.last()->pBefore = as; |
169 | } | 169 | } |
170 | } | 170 | } |
171 | 171 | ||
@@ -395,8 +395,8 @@ void Bu::ParamProc::process( int argc, char *argv[] ) | |||
395 | Bu::ParamProc::ArgSpec *Bu::ParamProc::checkWord( const char *arg ) | 395 | Bu::ParamProc::ArgSpec *Bu::ParamProc::checkWord( const char *arg ) |
396 | { | 396 | { |
397 | //printf("Checking \"%s\"...\n", arg ); | 397 | //printf("Checking \"%s\"...\n", arg ); |
398 | std::list<ArgSpec *>::const_iterator i; | 398 | Bu::List<ArgSpec *>::const_iterator i = lArg.begin(); |
399 | for( i = lArg.begin(); i != lArg.end(); i++ ) | 399 | for( ; i != lArg.end(); i++ ) |
400 | { | 400 | { |
401 | if( (*i)->sWord == "" ) | 401 | if( (*i)->sWord == "" ) |
402 | continue; | 402 | continue; |
@@ -420,8 +420,8 @@ Bu::ParamProc::ArgSpec *Bu::ParamProc::checkWord( const char *arg ) | |||
420 | Bu::ParamProc::ArgSpec *Bu::ParamProc::checkLetr( const char arg ) | 420 | Bu::ParamProc::ArgSpec *Bu::ParamProc::checkLetr( const char arg ) |
421 | { | 421 | { |
422 | //printf("Checking \'%c\'...\n", arg ); | 422 | //printf("Checking \'%c\'...\n", arg ); |
423 | std::list<ArgSpec *>::const_iterator i; | 423 | Bu::List<ArgSpec *>::const_iterator i = lArg.begin(); |
424 | for( i = lArg.begin(); i != lArg.end(); i++ ) | 424 | for( ; i != lArg.end(); i++ ) |
425 | { | 425 | { |
426 | if( (*i)->cChar == '\0' ) | 426 | if( (*i)->cChar == '\0' ) |
427 | continue; | 427 | continue; |
@@ -449,10 +449,10 @@ int Bu::ParamProc::unknownParam( int /*argc*/, char *argv[] ) | |||
449 | 449 | ||
450 | int Bu::ParamProc::help( int /*argc*/, char * /*argv*/ [] ) | 450 | int Bu::ParamProc::help( int /*argc*/, char * /*argv*/ [] ) |
451 | { | 451 | { |
452 | std::list<Banner *>::const_iterator b = lBan.begin(); | 452 | Bu::List<Banner *>::const_iterator b = lBan.begin(); |
453 | std::list<ArgSpec *>::const_iterator i; | 453 | Bu::List<ArgSpec *>::const_iterator i = lArg.begin(); |
454 | int len=0; | 454 | int len=0; |
455 | for( i = lArg.begin(); i != lArg.end(); i++ ) | 455 | for( ; i != lArg.end(); i++ ) |
456 | { | 456 | { |
457 | if( len < (*i)->sWord.getSize() + (*i)->sExtra.getSize() ) | 457 | if( len < (*i)->sWord.getSize() + (*i)->sExtra.getSize() ) |
458 | len = (*i)->sWord.getSize() + (*i)->sExtra.getSize(); | 458 | len = (*i)->sWord.getSize() + (*i)->sExtra.getSize(); |
@@ -517,6 +517,6 @@ void Bu::ParamProc::addHelpBanner( const char *sHelpBanner ) | |||
517 | Banner *pBan = new Banner; | 517 | Banner *pBan = new Banner; |
518 | pBan->sBanner = sHelpBanner; | 518 | pBan->sBanner = sHelpBanner; |
519 | pBan->pBefore = NULL; | 519 | pBan->pBefore = NULL; |
520 | lBan.push_back( pBan ); | 520 | lBan.append( pBan ); |
521 | } | 521 | } |
522 | 522 | ||
diff --git a/src/paramproc.h b/src/paramproc.h index bd59948..b7dbae3 100644 --- a/src/paramproc.h +++ b/src/paramproc.h | |||
@@ -9,8 +9,7 @@ | |||
9 | #define BU_PARAM_PROC_H | 9 | #define BU_PARAM_PROC_H |
10 | 10 | ||
11 | #include <stdint.h> | 11 | #include <stdint.h> |
12 | #include <string> | 12 | #include "bu/list.h" |
13 | #include <list> | ||
14 | #include "bu/fstring.h" | 13 | #include "bu/fstring.h" |
15 | 14 | ||
16 | namespace Bu | 15 | namespace Bu |
@@ -153,8 +152,8 @@ namespace Bu | |||
153 | Bu::FString sBanner; | 152 | Bu::FString sBanner; |
154 | ArgSpec *pBefore; | 153 | ArgSpec *pBefore; |
155 | } Banner; | 154 | } Banner; |
156 | std::list<Banner *> lBan; | 155 | Bu::List<Banner *> lBan; |
157 | std::list<ArgSpec *> lArg; | 156 | Bu::List<ArgSpec *> lArg; |
158 | }; | 157 | }; |
159 | } | 158 | } |
160 | 159 | ||
diff --git a/src/unit/fstring.unit b/src/unit/fstring.unit index 93065fe..3912de2 100644 --- a/src/unit/fstring.unit +++ b/src/unit/fstring.unit | |||
@@ -35,7 +35,7 @@ | |||
35 | unitTest( strcmp( b.getStr(), "abcdef" ) == 0 ); | 35 | unitTest( strcmp( b.getStr(), "abcdef" ) == 0 ); |
36 | } | 36 | } |
37 | 37 | ||
38 | {%shared1} | 38 | {%shared1:fail} |
39 | { | 39 | { |
40 | Bu::FString a("Hey there"); | 40 | Bu::FString a("Hey there"); |
41 | Bu::FString b( a ); | 41 | Bu::FString b( a ); |
diff --git a/src/unitsuite.cpp b/src/unitsuite.cpp index b61baa5..7421496 100644 --- a/src/unitsuite.cpp +++ b/src/unitsuite.cpp | |||
@@ -24,6 +24,10 @@ Bu::UnitSuite::~UnitSuite() | |||
24 | // Argument handling is coming soon, I promise. | 24 | // Argument handling is coming soon, I promise. |
25 | int Bu::UnitSuite::run( int /*argc*/, char * /*argv */ [] ) | 25 | int Bu::UnitSuite::run( int /*argc*/, char * /*argv */ [] ) |
26 | { | 26 | { |
27 | int iEPass = 0; | ||
28 | int iEFail = 0; | ||
29 | int iUPass = 0; | ||
30 | int iUFail = 0; | ||
27 | for( TestList::iterator i = lTests.begin(); i != lTests.end(); i++ ) | 31 | for( TestList::iterator i = lTests.begin(); i != lTests.end(); i++ ) |
28 | { | 32 | { |
29 | printf("%s: ", i->sName.getStr() ); | 33 | printf("%s: ", i->sName.getStr() ); |
@@ -31,13 +35,22 @@ int Bu::UnitSuite::run( int /*argc*/, char * /*argv */ [] ) | |||
31 | try | 35 | try |
32 | { | 36 | { |
33 | (this->*(i->fTest))(); | 37 | (this->*(i->fTest))(); |
34 | printf("passed.\n"); | 38 | switch( i->eExpect ) |
39 | { | ||
40 | case expectPass: printf("expected pass.\n"); iEPass++; break; | ||
41 | case expectFail: printf("unexpected pass.\n"); iUPass++; break; | ||
42 | } | ||
35 | } | 43 | } |
36 | catch( Failed &e ) | 44 | catch( Failed &e ) |
37 | { | 45 | { |
46 | switch( i->eExpect ) | ||
47 | { | ||
48 | case expectPass: printf("unexpected "); iUFail++; break; | ||
49 | case expectFail: printf("expected "); iEFail++; break; | ||
50 | } | ||
38 | if( e.bFile ) | 51 | if( e.bFile ) |
39 | { | 52 | { |
40 | printf("unitTest(%s) failed. (%s:%d)\n", | 53 | printf("fail in unitTest(%s). (%s:%d)\n", |
41 | e.str.getStr(), | 54 | e.str.getStr(), |
42 | e.sFile.getStr(), | 55 | e.sFile.getStr(), |
43 | e.nLine | 56 | e.nLine |
@@ -45,7 +58,7 @@ int Bu::UnitSuite::run( int /*argc*/, char * /*argv */ [] ) | |||
45 | } | 58 | } |
46 | else | 59 | else |
47 | { | 60 | { |
48 | printf("unitTest(%s) failed.\n", | 61 | printf("fail in unitTest(%s).\n", |
49 | e.str.getStr() | 62 | e.str.getStr() |
50 | ); | 63 | ); |
51 | } | 64 | } |
@@ -55,20 +68,40 @@ int Bu::UnitSuite::run( int /*argc*/, char * /*argv */ [] ) | |||
55 | } | 68 | } |
56 | catch( std::exception &e ) | 69 | catch( std::exception &e ) |
57 | { | 70 | { |
58 | printf("failed with unknown exception. what: %s\n", e.what() ); | 71 | switch( i->eExpect ) |
72 | { | ||
73 | case expectPass: printf("unexpected "); iUFail++; break; | ||
74 | case expectFail: printf("expected "); iEFail++; break; | ||
75 | } | ||
76 | printf("fail with unknown exception. what: %s\n", e.what() ); | ||
59 | 77 | ||
60 | if( (iOptions & optStopOnError) ) | 78 | if( (iOptions & optStopOnError) ) |
61 | return 0; | 79 | return 0; |
62 | } | 80 | } |
63 | catch( ... ) | 81 | catch( ... ) |
64 | { | 82 | { |
65 | printf("failed with external exception.\n"); | 83 | switch( i->eExpect ) |
84 | { | ||
85 | case expectPass: printf("unexpected "); iUFail++; break; | ||
86 | case expectFail: printf("expected "); iEFail++; break; | ||
87 | } | ||
88 | printf("fail with external exception.\n"); | ||
66 | 89 | ||
67 | if( (iOptions & optStopOnError) ) | 90 | if( (iOptions & optStopOnError) ) |
68 | return 0; | 91 | return 0; |
69 | } | 92 | } |
70 | } | 93 | } |
71 | 94 | ||
95 | printf("\nReport:\n" | ||
96 | "\tTotal tests run: %ld\n" | ||
97 | "\tExpected passes: %d\n" | ||
98 | "\tExpected failures: %d\n" | ||
99 | "\tUnexpected passes: %d\n" | ||
100 | "\tUnexpected failures: %d\n\n", | ||
101 | lTests.getSize(), iEPass, iEFail, iUPass, iUFail ); | ||
102 | if( iUPass == 0 && iUFail == 0 ) | ||
103 | printf("\tNothing unexpected.\n\n"); | ||
104 | |||
72 | return 0; | 105 | return 0; |
73 | } | 106 | } |
74 | 107 | ||
@@ -76,6 +109,7 @@ void Bu::UnitSuite::add( Test fTest, const Bu::FString &sName, Expect e ) | |||
76 | { | 109 | { |
77 | TestInfo ti; | 110 | TestInfo ti; |
78 | ti.sName = sName; | 111 | ti.sName = sName; |
112 | ti.eExpect = e; | ||
79 | long index = ti.sName.rfind("::"); | 113 | long index = ti.sName.rfind("::"); |
80 | if( index != -1 ) | 114 | if( index != -1 ) |
81 | { | 115 | { |
@@ -84,7 +118,7 @@ void Bu::UnitSuite::add( Test fTest, const Bu::FString &sName, Expect e ) | |||
84 | ti.sName = tmp; | 118 | ti.sName = tmp; |
85 | } | 119 | } |
86 | ti.fTest = fTest; | 120 | ti.fTest = fTest; |
87 | lTests.push_back( ti ); | 121 | lTests.append( ti ); |
88 | } | 122 | } |
89 | 123 | ||
90 | void Bu::UnitSuite::setName( const FString &sName ) | 124 | void Bu::UnitSuite::setName( const FString &sName ) |
diff --git a/src/unitsuite.h b/src/unitsuite.h index d75211a..97a1aec 100644 --- a/src/unitsuite.h +++ b/src/unitsuite.h | |||
@@ -9,7 +9,7 @@ | |||
9 | #define BU_UNIT_SUITE_H | 9 | #define BU_UNIT_SUITE_H |
10 | 10 | ||
11 | #include <stdint.h> | 11 | #include <stdint.h> |
12 | #include <list> | 12 | #include "bu/list.h" |
13 | #include "fstring.h" | 13 | #include "fstring.h" |
14 | 14 | ||
15 | namespace Bu | 15 | namespace Bu |
@@ -97,9 +97,10 @@ namespace Bu | |||
97 | { | 97 | { |
98 | FString sName; | 98 | FString sName; |
99 | Test fTest; | 99 | Test fTest; |
100 | Expect eExpect; | ||
100 | } TestInfo; | 101 | } TestInfo; |
101 | 102 | ||
102 | typedef std::list<TestInfo> TestList; | 103 | typedef Bu::List<TestInfo> TestList; |
103 | TestList lTests; | 104 | TestList lTests; |
104 | FString sSuiteName; | 105 | FString sSuiteName; |
105 | 106 | ||