У меня есть класс перечисления, который я хотел бы использовать в своих модульных тестах:
enum class MyEnumClass
{
MyEntryA,
MyEntryB
};
Я хотел бы использовать его следующим образом:
MyEnumClass myEnumValue = MyEnumClass::MyEntryA;
BOOST_CHECK_EQUAL(myEnumValue, MyEnumClass::MyEntryB);
Но я получаю эту ошибку, очевидно, потому что тест повышения пытается вывести значение:
include/boost/test/test_tools.hpp:326:14: error: cannot bind 'std::ostream {aka std::basic_ostream<char>}' lvalue to 'std::basic_ostream<char>&&'
ostr << t; // by default print the value
^
Добавление уродливого static_cast
«решает» проблему:
BOOST_CHECK_EQUAL(static_cast<int>(myEnumValue), static_cast<int>(MyEnumClass::MyEntryB));
Но я бы хотел избежать этого для каждого класса enum. Я также хотел бы избежать определения операторов потока <<
для каждого класса перечисления.
Есть ли более простой способ использовать классы enum с тестом повышения?
Или у других фреймворков модульного тестирования есть лучший способ работы с перечислимыми классами?