diff options
Diffstat (limited to 'src/unitsuite.cpp')
-rw-r--r-- | src/unitsuite.cpp | 46 |
1 files changed, 40 insertions, 6 deletions
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 ) |