/// @file /// @brief Task3: tests #include "task3.hpp" #include "iue-io/csv.hpp" #include // assert #include // std::sin #include // std::filesystem::remove #include // std::cout|endl #include // 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; }