Когда в названии автоматического тестового примера ускорения есть запятая, boost жалуется: "Ошибка настройки теста: ни один тестовый пример не соответствует фильтру или все тестовые примеры были отключены"

При использовании boost::mpl шаблон тестового случая не работает (что, как я предполагаю, из-за запятой).

Код работает с ускорением 1.55, поскольку используемое имя тестового примера является искаженным именем шаблона. Но при обновлении до 1.64 разоблаченное имя теперь используется как имя тестового примера IE:

test_case<foo<A,B>>

Код использует этот шаблон

template <bool arg1, typename arg2>
    struct test_template: public arg2
    {
        static const bool isEnabled = arg1;
    };

Теперь код объявляет контейнер mpl, содержащий два экземпляра шаблона.

using test_templates = boost::mpl::vector<
        test_template<true, SPECIALIZED>,
        test_template<false, GENERIC>> ;

Код использует BOOST_AUTO_TEST_CASE_TEMPLATE для автоматической регистрации тестовых случаев.

BOOST_AUTO_TEST_CASE_TEMPLATE(my_test, T, test_templates )
{
    BOOST_TEST( sizeof(T) == (unsigned)4 ); 
    //This will fail but this test case will not run at all in this example.
}

Теперь тестовые наборы будут называться:

   my_test<test_template<true,_SPECIALIZED>>
   my_test<test_template<false,_GENERIC>>

Из-за того, что имя тестового примера содержит запятую, у boost.test возникли проблемы с ним.

Этот код работал еще в boost 1.55, потому что boost назначал имена тестовых примеров с использованием искаженных имен созданных шаблонов (это длинное и странно выглядящее имя, но без запятой)

Есть идеи? Я просмотрел документацию по ускорению, и, похоже, нет ни слова об использовании нескольких параметризованных шаблонов, помещаемых в mpl для использования в тестах ускорения.

0 ответов

Другие вопросы по тегам