#include <catch2/catch.hpp> #include <Kokkos_Core.hpp> #include <utils/PugsAssert.hpp> #include <utils/Types.hpp> #include <algebra/TinyMatrix.hpp> #include <analysis/Polynomial.hpp> #include <analysis/PolynomialBasis.hpp> // Instantiate to ensure full coverage is performed template class Polynomial<0>; template class Polynomial<1>; template class Polynomial<2>; template class PolynomialBasis<2>; // clazy:excludeall=non-pod-global-static TEST_CASE("PolynomialBasis", "[analysis]") { SECTION("construction") { REQUIRE_NOTHROW(PolynomialBasis<2>{}); } SECTION("size") { PolynomialBasis<2> B; REQUIRE(B.size() == 3); REQUIRE(B.degree() == 2); } SECTION("build") { PolynomialBasis<2> B; REQUIRE(B.displayType() == "undefined"); B.build(BasisType::canonical); REQUIRE(B.elements()[1] == Polynomial<2>{{0, 1, 0}}); REQUIRE(B.elements()[2] == Polynomial<2>{{0, 0, 1}}); PolynomialBasis<2> C; C.build(BasisType::taylor); REQUIRE(B.elements()[1] == C.elements()[1]); C.build(BasisType::taylor, 1); REQUIRE(C.elements()[2] == Polynomial<2>{{1, -2, 1}}); } }