60 lines
1.7 KiB
C++
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;
|
|
}
|