Невозможно компилировать параметризованные тесты повышения с CmakeC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно компилировать параметризованные тесты повышения с Cmake

Сообщение Anonymous »

В качестве минимального примера (это часть более крупного проекта), у меня есть следующие три файла в проекте со следующей структурой: < /p>

Код: Выделить всё

.
├── src
│   ├── binary_search.cpp
└── test
├── CMakeLists.txt
├── build
└── test_binary_search.cpp
< /code>
binary_search.cpp:
#include 

template  T binary_search(T A[], uint8_t len, T nu) {
uint8_t low = 0;
uint8_t high = len - 1;

while (low  A[mid])
low = mid + 1;
else
high = mid - 1;
}

return -1;
}
< /code>
test_binary_search.cpp:
#include 
#include 

#define BOOST_TEST_MODULE test_algorithms

BOOST_AUTO_TEST_SUITE(test_search)

int32_t input_arrs[4][8] = {{26, 31, 41, 41, 58, 59, 101, 104},
{26, 31, 41, 41, 58, 59, 101, 104},
{1, 4, 5, 7, 19, 28, 45, 92},
{1, 4, 5, 7, 19, 28, 45, 92}};
int32_t input_vals[] = {31, 32, 92, 101};
int32_t expected_vals[] = {1, -1, 7, -1};

auto test_cases = boost::unit_test::data::make(input_arrs) ^
boost::unit_test::data::make(input_vals) ^
boost::unit_test::data::make(expected_vals);

BOOST_DATA_TEST_CASE(test_binary_search, test_cases, input_arr, nu, exp) {
auto obs = binary_search(input_arr, 8, nu);

BOOST_ASSERT(obs == exp);
}
< /code>
cmakelists.txt:
cmake_minimum_required(VERSION 3.16)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++20")
project(test_algorithms)

set(SOURCES
../src/binary_search.cpp
test_binary_search.cpp
)

find_package(Boost 1.87.0 REQUIRED COMPONENTS unit_test_framework)
if (Boost_FOUND)
enable_testing()
include_directories(${Boost_INCLUDE_DIRS})

add_executable(test_binary_search ${SOURCES})
target_include_directories(test_binary_search PRIVATE ${Boost_INCLUDE_DIRS})
add_test(NAME test_binary_search COMMAND test_binary_search)
endif()
< /code>
Я пытаюсь скомпилировать это на MacBook Pro M3 Pro, работающем MacOS Sequoia 15.3.1, используя следующие команды: < /p>
cmake -S . -B build
cmake --build build
< /code>
после чего я получаю очень длинное сообщение об ошибке. Я подозреваю, что проблема может быть < /p>
/Users/graham/dev/cpp_experiments/test/test_binary_search.cpp:20:14: error: use of undeclared identifier 'binary_search'
20 |   auto obs = binary_search(input_arr, 8, nu);
< /code>
, который, в свою очередь, может быть вызван < /p>
/opt/homebrew/include/boost/test/data/test_case.hpp:89:16: error: reference to type 'const const int[8]' could not bind to an lvalue of type 'const int'
89 |         return *value;
Я не уверен, где/как я набираю для ввода const int в этом коде; Макросы Boost выполняют это преобразование? Я изо всех сил пытаюсь понять рекомендуемый способ использования Boost :: Unit_test :: Data :: Make , чтобы застегнуть параметризованные данные тестирования. Любая помощь в том, как лучше структурировать этот код для создания параметризованного набора тестов, будет очень оценена!

Подробнее здесь: https://stackoverflow.com/questions/794 ... with-cmake
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Невозможно компилировать параметризованные тесты повышения с Cmake
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Невозможно компилировать параметризованные тесты повышения с Cmake
    Anonymous » » в форуме C++
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Невозможно компилировать параметризованные тесты повышения
    Anonymous » » в форуме C++
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Динамические параметризованные тесты с GoogleTest и CTest
    Anonymous » » в форуме C++
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Ошибка CMake в cmake/QtSeparateDebugInfo.cmake:65 (сообщение): Извлеченный двоичный путь для полосы не существует. Кросс
    Anonymous » » в форуме Linux
    0 Ответы
    90 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»