Skip to content

Commit b0ec41c

Browse files
committed
Made the unit test's output more readable, adding to jsontest's
capabilities (and simplifying its implementation) in the process.
1 parent 2a2b5cf commit b0ec41c

3 files changed

Lines changed: 205 additions & 269 deletions

File tree

src/test_lib_json/jsontest.cpp

Lines changed: 0 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -250,74 +250,6 @@ TestResult::addToLastFailure( const std::string &message )
250250
}
251251

252252

253-
TestResult &
254-
TestResult::operator << ( bool value )
255-
{
256-
return addToLastFailure( value ? "true" : "false" );
257-
}
258-
259-
260-
TestResult &
261-
TestResult::operator << ( int value )
262-
{
263-
char buffer[32];
264-
sprintf( buffer, "%d", value );
265-
return addToLastFailure( buffer );
266-
}
267-
268-
269-
TestResult &
270-
TestResult::operator << ( unsigned int value )
271-
{
272-
char buffer[32];
273-
sprintf( buffer, "%u", value );
274-
return addToLastFailure( buffer );
275-
}
276-
277-
278-
#ifdef JSON_HAS_INT64
279-
TestResult &
280-
TestResult::operator << ( Json::Int64 value )
281-
{
282-
char buffer[32];
283-
sprintf( buffer, "%lld", value );
284-
return addToLastFailure( buffer );
285-
}
286-
287-
TestResult &
288-
TestResult::operator << ( Json::UInt64 value )
289-
{
290-
char buffer[32];
291-
sprintf( buffer, "%ull", value );
292-
return addToLastFailure( buffer );
293-
}
294-
#endif
295-
296-
297-
TestResult &
298-
TestResult::operator << ( double value )
299-
{
300-
char buffer[32];
301-
sprintf( buffer, "%16g", value );
302-
return addToLastFailure( buffer );
303-
}
304-
305-
306-
TestResult &
307-
TestResult::operator << ( const char *value )
308-
{
309-
return addToLastFailure( value ? value
310-
: "<NULL>" );
311-
}
312-
313-
314-
TestResult &
315-
TestResult::operator << ( const std::string &value )
316-
{
317-
return addToLastFailure( value );
318-
}
319-
320-
321253

322254
// class TestCase
323255
// //////////////////////////////////////////////////////////////////

src/test_lib_json/jsontest.h

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77
# define JSONTEST_H_INCLUDED
88

99
# include <json/config.h>
10+
# include <json/value.h>
1011
# include <stdio.h>
1112
# include <deque>
13+
# include <sstream>
1214
# include <string>
1315

1416
// //////////////////////////////////////////////////////////////////
@@ -84,16 +86,18 @@ namespace JsonTest {
8486

8587
void printFailure( bool printTestName ) const;
8688

87-
TestResult &operator << ( bool value );
88-
TestResult &operator << ( int value );
89-
TestResult &operator << ( unsigned int value );
90-
#ifdef JSON_HAS_INT64
91-
TestResult &operator << ( Json::Int64 value );
92-
TestResult &operator << ( Json::UInt64 value );
93-
#endif
94-
TestResult &operator << ( double value );
95-
TestResult &operator << ( const char *value );
96-
TestResult &operator << ( const std::string &value );
89+
// Generic operator that will work with anything ostream can deal with.
90+
template <typename T>
91+
TestResult &operator << ( const T& value ) {
92+
std::ostringstream oss;
93+
oss << value;
94+
return addToLastFailure(oss.str());
95+
}
96+
97+
// Specialized versions.
98+
TestResult &operator << ( bool value ) {
99+
return addToLastFailure(value ? "true" : "false");
100+
}
97101

98102
private:
99103
TestResult &addToLastFailure( const std::string &message );
@@ -177,9 +181,9 @@ namespace JsonTest {
177181
Factories tests_;
178182
};
179183

180-
template<typename T>
184+
template<typename T, typename U>
181185
TestResult &
182-
checkEqual( TestResult &result, const T &expected, const T &actual,
186+
checkEqual( TestResult &result, const T &expected, const U &actual,
183187
const char *file, unsigned int line, const char *expr )
184188
{
185189
if ( expected != actual )

0 commit comments

Comments
 (0)