blob: 5241c083e5b19aed5423e18a0c8b2c9ca894d452 [file] [log] [blame]
Austin Schuh173a1592018-12-19 16:20:54 +11001#include "frc971/control_loops/fixed_quadrature.h"
2
3#include <cmath>
4
5#include "gtest/gtest.h"
6
Stephan Pleinesf63bde82024-01-13 15:59:33 -08007namespace frc971::control_loops::testing {
Austin Schuh173a1592018-12-19 16:20:54 +11008
9// Tests that integrating y = cos(x) works.
10TEST(GaussianQuadratureTest, Cos) {
11 double y1 =
12 GaussianQuadrature5([](double x) { return ::std::cos(x); }, 0.0, 0.5);
13
14 EXPECT_NEAR(y1, ::std::sin(0.5), 1e-15);
15}
16
Austin Schuha935a082023-02-20 21:45:54 -080017// Tests that integrating y = [cos(x), sin(x)] works.
18TEST(GaussianQuadratureTest, MatrixCos) {
19 Eigen::Matrix<double, 2, 1> y1 = MatrixGaussianQuadrature5<2>(
20 [](double x) {
21 return Eigen::Matrix<double, 2, 1>(std::cos(x), std::sin(x));
22 },
23 0.0, 0.5);
24
25 EXPECT_TRUE(y1.isApprox(Eigen::Matrix<double, 2, 1>(
26 ::std::sin(0.5), -std::cos(0.5) + std::cos(0))));
27}
28
Stephan Pleinesf63bde82024-01-13 15:59:33 -080029} // namespace frc971::control_loops::testing