C++ Only Features: Difference between revisions

From STRIDE Wiki
Jump to navigation Jump to search
No edit summary
Line 44: Line 44:
</source>
</source>


[[Category:Testing]]
[[Category:Test Units]]

Revision as of 18:30, 28 May 2010

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";

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.

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;
}