blob: 95892cca0b59811d51f099a25609f68d0aedebbc [file] [log] [blame]
Nikolai Sohmers3cc1fc22024-05-04 12:27:58 -07001#include "y2024_swerve/swerve_publisher_lib.h"
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -07002
3#include "gtest/gtest.h"
4
5#include "aos/events/simulated_event_loop.h"
6
Nikolai Sohmers3cc1fc22024-05-04 12:27:58 -07007namespace y2024_swerve::testing {
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -07008class SwervePublisherTest : public ::testing::Test {
9 public:
10 SwervePublisherTest()
Nikolai Sohmers3cc1fc22024-05-04 12:27:58 -070011 : config_(aos::configuration::ReadConfig("y2024_swerve/aos_config.json")),
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -070012 event_loop_factory_(&config_.message()),
13 roborio_(aos::configuration::GetNode(
14 event_loop_factory_.configuration(), "roborio")),
15 event_loop_(
16 event_loop_factory_.MakeEventLoop("swerve_publisher", roborio_)),
17 exit_handle_(event_loop_factory_.MakeExitHandle()),
18 drivetrain_swerve_output_fetcher_(
19 event_loop_->MakeFetcher<
20 frc971::control_loops::drivetrain::swerve::Output>(
21 "/drivetrain")),
22 swerve_publisher_(event_loop_.get(), exit_handle_.get(),
Nikolai Sohmers3cc1fc22024-05-04 12:27:58 -070023 "y2024_swerve/swerve_drivetrain_output.json", 100) {}
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -070024
25 void SendOutput() { event_loop_factory_.Run(); }
26
27 void CheckOutput() {
28 drivetrain_swerve_output_fetcher_.Fetch();
29
30 ASSERT_TRUE(drivetrain_swerve_output_fetcher_.get() != nullptr)
31 << ": No drivetrain output";
32 }
33
34 private:
35 aos::FlatbufferDetachedBuffer<aos::Configuration> config_;
36 aos::SimulatedEventLoopFactory event_loop_factory_;
37 const aos::Node *const roborio_;
38
39 std::unique_ptr<aos::EventLoop> event_loop_;
40 std::unique_ptr<aos::ExitHandle> exit_handle_;
41
42 aos::Fetcher<frc971::control_loops::drivetrain::swerve::Output>
43 drivetrain_swerve_output_fetcher_;
44
Nikolai Sohmers3cc1fc22024-05-04 12:27:58 -070045 y2024_swerve::SwervePublisher swerve_publisher_;
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -070046};
47
48TEST_F(SwervePublisherTest, CheckSentFb) {
49 SendOutput();
50 CheckOutput();
51}
Nikolai Sohmers3cc1fc22024-05-04 12:27:58 -070052} // namespace y2024_swerve::testing