C++ Only Features: Difference between revisions
		
		
		
		Jump to navigation
		Jump to search
		
| No edit summary | |||
| (One intermediate revision by one other user not shown) | |||
| Line 4: | Line 4: | ||
| <source lang="cpp"> | <source lang="cpp"> | ||
| srEXPECT_TRUE(a != b) << "My custom message"; | srEXPECT_TRUE(a != b) << "My custom message" << " with more data " << 1234; | ||
| </source> | </source> | ||
| Line 11: | Line 11: | ||
| * C string (char* or wchar_t*), and   | * C string (char* or wchar_t*), and   | ||
| * types allowing implicit cast to numeric type or "C" string.   | * types allowing implicit cast to numeric type or "C" string.   | ||
| === Overloading the << operator === | |||
| You can also overload the << operator in order to annotate reports using your own custom type. An example is below. | You can also overload the << operator in order to annotate reports using your own custom type. An example is below. | ||
Latest revision as of 23:13, 23 February 2012
Use Operator << to Augment Test Macros
In C++ test code Test Point, Test Log and Test Code macros support adding to the annotation using the << operator. For example:
srEXPECT_TRUE(a != b) << "My custom message" << " with more data " << 1234;
As delivered, the macros will support stream input annotations for:
- all numeric types,
- C string (char* or wchar_t*), and
- types allowing implicit cast to numeric type or "C" string.
Overloading the << operator
You can also overload the << operator in order to annotate reports using your own custom type. An example is below.
The following will compile and execute successfully given that the << operator is overloaded as shown:
#include <srtest.h>
// MyCustomClass implementation
class MyCustomClass
{
public:
   MyCustomClass(int i) : m_int(i) {}
private: 
   int m_int; 
   friend stride::Message& operator<<(stride::Message& ss, const MyCustomClass& obj);
}; 
stride::Message& operator<<(stride::Message& ss, const MyCustomClass& obj)
{
   ss << obj.m_int;
   return ss;
}
void test()
{
    MyCustomClass custom(34); 
    srEXPECT_FALSE(true) << custom;
}