TU-Programmieren_2/exercise3/task3.test.cpp
2025-04-09 10:22:44 +02:00

60 lines
1.7 KiB
C++

/// @file
/// @brief Task3: tests
#include "task3.hpp"
#include "iue-io/csv.hpp"
#include <cassert> // assert
#include <cmath> // std::sin
#include <filesystem> // std::filesystem::remove
#include <iostream> // std::cout|endl
#include <numbers> // std::numbers::pi
int main() {
{
auto f = [](double x) { return cos(x); };
auto df = [](double x) { return -sin(x); };
auto F = [](double x) { return sin(x) - (sin(0)); };
std::filesystem::path filename = "test.task3.cos.csv";
std::filesystem::remove(filename);
sample_to_csv(filename, ';', '#', f, 0, 2 * std::numbers::pi, 18);
auto table = iue::io::loadtxt(filename, ';', '#');
assert(table.size() == 18);
for (unsigned int r = 0; r != table.size(); ++r) {
assert(table[r].size() == 4);
assert(std::abs(f(table[r][0]) - table[r][1]) < 0.2);
assert(std::abs(F(table[r][0]) - table[r][2]) < 0.2);
assert(std::abs(df(table[r][0]) - table[r][3]) < 0.2);
}
}
{
auto f = [](double x) { return sin(x); };
auto df = [](double x) { return cos(x); };
auto F = [](double x) { return -cos(x) - (-cos(0)); };
std::filesystem::path filename = "test.task3.sin.csv";
std::filesystem::remove(filename);
sample_to_csv(filename, ';', '#', f, 0, 2 * std::numbers::pi, 360);
auto table = iue::io::loadtxt(filename, ';', '#');
assert(table.size() == 360);
for (unsigned int r = 0; r != table.size(); ++r) {
assert(table[r].size() == 4);
assert(std::abs(f(table[r][0]) - table[r][1]) < 0.01);
assert(std::abs(F(table[r][0]) - table[r][2]) < 0.01);
assert(std::abs(df(table[r][0]) - table[r][3]) < 0.01);
}
}
std::cout << "task3.test.cpp: all asserts passed" << std::endl;
return 0;
}