I am using following example from here
Consider I have following class
#include
class Distance {
private:
int feet;
i
Is there any way I can use EXPECT_EQ instead?
You can use a stringstream
to print the results of operator<<
to a string, then compare the string.
https://en.cppreference.com/w/cpp/io/basic_stringstream
TEST( Distance, Output )
{
std::ostringstream out;
Distance d;
out << d;
EXPECT_EQ( "F:0 I:0", out.str() );
}
Input test would be similar, just use std::istringtream
instead.
What do you want to test about the operators?
That the stream is in a good state after writing to or reading from it.
You can check for that.
That the output operator writes a particular string for a particular distance.
You can do this by writing into a std::ostringstream
and comparing the result of calling its str()
member with your expectations.
That the input iterator reads a particular distance from a particular string.
You can do this employing a std::istringstream
initialized with the string, comparing the distance read from it with what you expect.
That the class eats its own dog food.
Use a std::stringstream
to write into, then read from it, and compare what you read with what you wrote.
Note: This will currently fail.