Сделать эталонный пример проекта Ctest

Статус рабочей области:Поиск исполнителя
Стоимость:2 000 рублей
Срок выполнения:1 день
Варианты оплаты:Планируется использовать Безопасную сделку
Дата публикации:2024-09-23 11:26
Обновлено:2024-09-24 12:52
Был(а) на сайте:2024-09-27 18:27

Сделать эталонный пример проекта Ctest

 
Задача

Использовать фреймворк из cmake: https://cmake.org/cmake/help/book/mastering-cmake/chapter/Testing%20With%20CMake%20and%20CTest.html

Сделать пример С++ проекта с тестами. Просто шаблонный проект для студентов, чтобы там присутствовал набор эталонных тестов.

Условно, проект должен собираться на linux и windows, там должно быть несколько тестов на равенство нецелочисленных значений, на возврат функцией true\false значения. Всего 5 любых тестов в качестве примеров для самостоятельной работы.

Оставлять заявки могут только авторизованные пользователи.
Для подачи заявки на участие в задании Вам нужно авторизоваться
Шаги для создания проекта:
Структура проекта:

css
CMakeLists.txt
src/
main.cpp
functions.cpp
functions.h
tests/
CMakeLists.txt
test_functions.cpp
CMakeLists.txt (в корневой папке):

cmake
cmake_minimum_required(VERSION 3.10)

project(StudentProject)

set(CMAKE_CXX_STANDARD 17)

# Включаем поддержку тестов
enable_testing()

# Исходники
add_executable(StudentProject src/main.cpp src/functions.cpp)

# Тесты
add_subdirectory(tests)
src/main.cpp:

cpp
#include <iostream>
#include "functions.h"

int main() {
std::cout << "This is a sample project for testing with CMake and CTest." << std::endl;
return 0;
}
src/functions.h:

cpp
#pragma once

bool is_positive(double value);
double add(double a, double b);
bool is_equal(double a, double b, double tolerance = 1e-5);
src/functions.cpp:

cpp
#include "functions.h"
#include <cmath>

bool is_positive(double value) {
return value > 0;
}

double add(double a, double b) {
return a + b;
}

bool is_equal(double a, double b, double tolerance) {
return std::abs(a - b) < tolerance;
}
tests/CMakeLists.txt:

cmake
set(TESTS_SRC
test_functions.cpp
)

add_executable(Tests ${TESTS_SRC})
target_link_libraries(Tests PRIVATE StudentProject)

# Добавляем тесты для CTest
add_test(NAME TestFunctions COMMAND Tests)
tests/test_functions.cpp:

cpp
#include <iostream>
#include <cassert>
#include "functions.h"

void test_is_positive() {
assert(is_positive(5.0) == true);
assert(is_positive(-3.0) == false);
}

void test_add() {
assert(add(2.0, 3.0) == 5.0);
assert(add(-1.0, -1.0) == -2.0);
}

void test_is_equal() {
assert(is_equal(0.1 + 0.2, 0.3) == true);
assert(is_equal(1.0, 1.00001) == true);
assert(is_equal(1.0, 1.1) == false);
}

int main() {
test_is_positive();
test_add();
test_is_equal();
std::cout << "All tests passed!" << std::endl;
return 0;
}
Шаги для сборки и запуска...

Оставлять заявки могут только авторизованные пользователи.

Другие открытые задания:

поиск заданий