Skip to content

Commit 37735cc

Browse files
committed
Removed the failure formatting from Utest
1 parent 3693943 commit 37735cc

File tree

9 files changed

+209
-163
lines changed

9 files changed

+209
-163
lines changed

include/CppUTest/SimpleString.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ SimpleString StringFrom(bool value);
117117
SimpleString StringFrom(void* value);
118118
SimpleString StringFrom(char value);
119119
SimpleString StringFrom(const char *value);
120+
SimpleString StringFromOrNull(const char * value);
120121
SimpleString StringFrom(long value);
121122
SimpleString StringFrom(int value);
122123
SimpleString HexStringFrom(long value);

include/CppUTest/TestFailure.h

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -72,25 +72,45 @@ class TestFailure
7272
class EqualsFailure: public TestFailure
7373
{
7474
public:
75+
EqualsFailure(Utest*, const char* fileName, int lineNumber, const char* expected, const char* actual);
76+
EqualsFailure(Utest*, const char* fileName, int lineNumber, const SimpleString& expected, const SimpleString& actual);
77+
};
7578

76-
EqualsFailure(Utest*, const char* fileName, int lineNumber,
77-
const SimpleString& expected, const SimpleString& actual);
79+
class ContainsFailure: public TestFailure
80+
{
81+
public:
82+
ContainsFailure(Utest*, const char* fileName, int lineNumber, const SimpleString& expected, const SimpleString& actual);
7883

79-
private:
80-
EqualsFailure(const EqualsFailure&);
81-
EqualsFailure& operator=(const EqualsFailure&);
8284
};
8385

84-
class ContainsFailure: public TestFailure
86+
class CheckFailure : public TestFailure
8587
{
8688
public:
89+
CheckFailure(Utest* test, const char* fileName, int lineNumber, const SimpleString& conditionString);
90+
};
8791

88-
ContainsFailure(Utest*, const char* fileName, int lineNumber,
89-
const SimpleString& expected, const SimpleString& actual);
92+
class FailFailure : public TestFailure
93+
{
94+
public:
95+
FailFailure(Utest* test, const char* fileName, int lineNumber, const SimpleString& message);
96+
};
9097

91-
private:
92-
ContainsFailure(const ContainsFailure&);
93-
ContainsFailure& operator=(const ContainsFailure&);
98+
class LongsEqualFailure : public TestFailure
99+
{
100+
public:
101+
LongsEqualFailure(Utest* test, const char* fileName, int lineNumber, long expected, long actual);
102+
};
103+
104+
class StringEqualFailure : public TestFailure
105+
{
106+
public:
107+
StringEqualFailure(Utest* test, const char* fileName, int lineNumber, const char* expected, const char* actual);
108+
};
109+
110+
class StringEqualNoCaseFailure : public TestFailure
111+
{
112+
public:
113+
StringEqualNoCaseFailure(Utest* test, const char* fileName, int lineNumber, const char* expected, const char* actual);
94114
};
95115

96116
#endif

include/CppUTest/Utest.h

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,10 @@ class TestFailure;
4949
class Utest
5050
{
5151
public:
52-
5352
Utest(const char* groupName, const char* testName, const char* fileName,
5453
int lineNumber);
55-
5654
virtual ~Utest();
5755

58-
virtual void testBody()
59-
{
60-
}
61-
6256
virtual void run(TestResult& result);
6357
virtual void runOneTestWithPlugins(TestPlugin* plugin, TestResult& result);
6458
virtual SimpleString getFormattedName() const;
@@ -68,17 +62,20 @@ class Utest
6862
virtual bool isNull() const;
6963
virtual int countTests();
7064

71-
bool shouldRun(const SimpleString& groupFilter,
72-
const SimpleString& nameFilter) const;
65+
bool shouldRun(const SimpleString& groupFilter, const SimpleString& nameFilter) const;
7366
const SimpleString getName() const;
7467
const SimpleString getGroup() const;
7568
const SimpleString getFile() const;
7669
int getLineNumber() const;
7770
const virtual char *getProgressIndicator() const;
71+
7872
virtual void setup();
7973
virtual void teardown();
80-
static TestResult *getTestResult();
74+
virtual void testBody();
75+
76+
static TestResult *getTestResult();
8177
static Utest *getCurrent();
78+
8279
virtual void assertTrue(bool condition, const char *conditionString, const char *fileName, int lineNumber);
8380
virtual void assertCstrEqual(const char *expected, const char *actual, const char *fileName, int lineNumber);
8481
virtual void assertCstrNoCaseEqual(const char *expected, const char *actual, const char *fileName, int lineNumber);
@@ -88,12 +85,15 @@ class Utest
8885
virtual void assertPointersEqual(void *expected, void *actual, const char *fileName, int lineNumber);
8986
virtual void assertDoublesEqual(double expected, double actual, double threshold, const char *fileName, int lineNumber);
9087
virtual void fail(const char *text, const char *fileName, int lineNumber);
88+
9189
virtual void print(const char *text, const char *fileName, int lineNumber);
9290
virtual void print(const SimpleString & text, const char *fileName, int lineNumber);
91+
9392
void setFileName(const char *fileName);
9493
void setLineNumber(int lineNumber);
9594
void setGroupName(const char *groupName);
9695
void setTestName(const char *testName);
96+
9797
virtual void exitCurrentTest();
9898
protected:
9999
virtual void runOneTest(TestPlugin *plugin, TestResult & result);
@@ -102,8 +102,10 @@ class Utest
102102
virtual void executePlatformSpecificTestBody();
103103
virtual void executePlatformSpecificTeardown();
104104
virtual void executePlatformSpecificExitCurrentTest();
105+
105106
Utest();
106107
Utest(const char *groupName, const char *testName, const char *fileName, int lineNumber, Utest *nextTest);
108+
107109
virtual SimpleString getMacroName() const;
108110
private:
109111
const char *group_;
@@ -118,16 +120,7 @@ class Utest
118120
static Utest* currentTest_;
119121
static TestResult* testResult_;
120122

121-
SimpleString stringFromOrNull(const char * expected);
122-
void failEqualsTest(const char * expected, const char* actual, const char * fileName, int lineNumber);
123-
void failCstrEqualsTest(const char * expected, const char* actual, const char * fileName, int lineNumber);
124-
void failCstrEqualsTestNoCase(const char * expected, const char* actual, const char * fileName, int lineNumber);
125-
void failContainsTest(const char * expected, const char* actual, const char * fileName, int lineNumber);
126-
int findStartOfCstrEqualsFailNoCase(const char * expected, const char* actual);
127-
int findStartOfCstrEqualsFail(const char * expected, const char* actual);
128-
char * newCstrEqualsFailMessage(const char * expected, const char* actual);
129-
char * newCstrEqualsFailNoCaseMessage(const char * expected, const char* actual);
130-
char* formCStrEqualsFailMessage(const char* actual, int failStart);
123+
void failWith(const TestFailure& failure);
131124
};
132125

133126
//////////////////// NulLTest

src/CppUTest/SimpleString.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,11 @@ SimpleString StringFrom(const char *value)
299299
return SimpleString(value);
300300
}
301301

302+
SimpleString StringFromOrNull(const char * expected)
303+
{
304+
return (expected) ? StringFrom(expected) : "(null)";
305+
}
306+
302307
SimpleString StringFrom(int value)
303308
{
304309
return StringFromFormat("%d", value);

src/CppUTest/TestFailure.cpp

Lines changed: 93 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#include "CppUTest/TestHarness.h"
2929
#include "CppUTest/TestFailure.h"
3030
#include "CppUTest/TestOutput.h"
31+
#include "CppUTest/PlatformSpecificFunctions.h"
3132

3233
TestFailure::TestFailure(Utest* test, const char* fileName, int lineNumber, const SimpleString& theMessage) :
3334
testName_(test->getFormattedName()), fileName_(fileName), lineNumber_(lineNumber), message_(theMessage)
@@ -73,10 +74,16 @@ SimpleString TestFailure::getMessage() const
7374
return message_;
7475
}
7576

76-
EqualsFailure::EqualsFailure(Utest* test, const char* fileName, int lineNumber, const SimpleString& expected, const SimpleString& actual) :
77+
EqualsFailure::EqualsFailure(Utest* test, const char* fileName, int lineNumber, const char* expected, const char* actual) :
7778
TestFailure(test, fileName, lineNumber)
7879
{
80+
const char* format = "expected <%s>\n\tbut was <%s>";
81+
message_ = StringFromFormat(format, StringFromOrNull(expected).asCharString(), StringFromOrNull(actual).asCharString());
82+
}
7983

84+
EqualsFailure::EqualsFailure(Utest* test, const char* fileName, int lineNumber, const SimpleString& expected, const SimpleString& actual)
85+
: TestFailure(test, fileName, lineNumber)
86+
{
8087
const char* format = "expected <%s>\n\tbut was <%s>";
8188
message_ = StringFromFormat(format, expected.asCharString(), actual.asCharString());
8289
}
@@ -88,3 +95,88 @@ ContainsFailure::ContainsFailure(Utest* test, const char* fileName, int lineNumb
8895
const char* format = "actual <%s>\n\tdid not contain <%s>";
8996
message_ = StringFromFormat(format, actual.asCharString(), expected.asCharString());
9097
}
98+
99+
CheckFailure::CheckFailure(Utest* test, const char* fileName, int lineNumber, const SimpleString& conditionString) : TestFailure(test, fileName, lineNumber)
100+
{
101+
message_ = "CHECK(";
102+
message_ += conditionString;
103+
message_ += ") failed";
104+
}
105+
106+
FailFailure::FailFailure(Utest* test, const char* fileName, int lineNumber, const SimpleString& message) : TestFailure(test, fileName, lineNumber)
107+
{
108+
message_ = message;
109+
}
110+
111+
LongsEqualFailure::LongsEqualFailure(Utest* test, const char* fileName, int lineNumber, long expected, long actual) : TestFailure(test, fileName, lineNumber)
112+
{
113+
SimpleString aDecimal = StringFrom(actual);
114+
SimpleString aHex = HexStringFrom(actual);
115+
SimpleString eDecimal = StringFrom(expected);
116+
SimpleString eHex = HexStringFrom(expected);
117+
118+
SimpleString::padStringsToSameLength(aDecimal, eDecimal, ' ');
119+
SimpleString::padStringsToSameLength(aHex, eHex, '0');
120+
121+
SimpleString actualReported = aDecimal + " 0x" + aHex;
122+
SimpleString expectedReported = eDecimal + " 0x" + eHex;
123+
message_ = StringFromFormat("expected <%s>\n\tbut was <%s>", expectedReported.asCharString(), actualReported.asCharString());
124+
}
125+
126+
StringEqualFailure::StringEqualFailure(Utest* test, const char* fileName, int lineNumber, const char* expected, const char* actual) : TestFailure(test, fileName, lineNumber)
127+
{
128+
int failStart;
129+
for (failStart = 0; actual[failStart] == expected[failStart]; failStart++)
130+
;
131+
132+
const char * error = "<!>";
133+
char * message;
134+
135+
//cpputest_malloc is needed instead of new[] for vc6 compatibility
136+
message = (char*)cpputest_malloc(PlatformSpecificStrLen(actual) + PlatformSpecificStrLen(error) + 10);
137+
138+
int j;
139+
for (j = 0; j < failStart; j++)
140+
message[j] = actual[j];
141+
142+
for (int k = 0; k < (int)PlatformSpecificStrLen(error); j++, k++)
143+
message[j] = error[k];
144+
145+
for (int i = failStart; actual[i]; i++, j++)
146+
message[j] = actual[i];
147+
148+
message[j] = '\0';
149+
150+
message_ = StringFromFormat("expected <%s>\n\tbut was <%s>", expected, message);
151+
cpputest_free(message);
152+
}
153+
154+
StringEqualNoCaseFailure::StringEqualNoCaseFailure(Utest* test, const char* fileName, int lineNumber, const char* expected, const char* actual) : TestFailure(test, fileName, lineNumber)
155+
{
156+
int failStart;
157+
for (failStart = 0; PlatformSpecificToLower(actual[failStart]) == PlatformSpecificToLower(expected[failStart]); failStart++)
158+
;
159+
160+
const char * error = "<!>";
161+
char * message;
162+
163+
//cpputest_malloc is needed instead of new[] for vc6 compatibility
164+
message = (char*)cpputest_malloc(PlatformSpecificStrLen(actual) + PlatformSpecificStrLen(error) + 10);
165+
166+
int j;
167+
for (j = 0; j < failStart; j++)
168+
message[j] = actual[j];
169+
170+
for (int k = 0; k < (int)PlatformSpecificStrLen(error); j++, k++)
171+
message[j] = error[k];
172+
173+
for (int i = failStart; actual[i]; i++, j++)
174+
message[j] = actual[i];
175+
176+
message[j] = '\0';
177+
178+
message_ = StringFromFormat("expected <%s>\n\tbut was <%s>", expected, message);
179+
cpputest_free(message);
180+
}
181+
182+

0 commit comments

Comments
 (0)