В тесте Google Расширенная документация говорят, что нужно писать PrintTo
в том же пространстве имен, которое определяет значение для печати, что отлично, если это ваш собственный класс в вашем собственном пространстве имен, но если он std::set
вы не должны добавлять новые члены в пространство имен std
.
Итак, как настроить поведение PrintTo
для std::set<std::string>
? Принтер по умолчанию в тесте Google прекращает печать после определенного количества значений, что бесполезно, если значения, которые различаются, идут после значений, выданных принтером по умолчанию.
#include <set>
#include <string>
#include <gtest/gtest.h>
void PrintTo(const std::set<std::string> &value, std::ostream *str)
{
*str << "Got here!\n";
}
TEST(MapPrint, custom_printer)
{
std::set<std::string> one{"foo"};
std::set<std::string> two{"bar"};
ASSERT_EQ(one, two); // doesn't print 'Got here!'
}