Nikolai Sohmers | 3cc1fc2 | 2024-05-04 12:27:58 -0700 | [diff] [blame^] | 1 | #include "y2024_swerve/swerve_publisher_lib.h" |
Maxwell Henderson | f63a0d9 | 2023-06-24 14:49:51 -0700 | [diff] [blame] | 2 | |
| 3 | #include "gtest/gtest.h" |
| 4 | |
| 5 | #include "aos/events/simulated_event_loop.h" |
| 6 | |
Nikolai Sohmers | 3cc1fc2 | 2024-05-04 12:27:58 -0700 | [diff] [blame^] | 7 | namespace y2024_swerve::testing { |
Maxwell Henderson | f63a0d9 | 2023-06-24 14:49:51 -0700 | [diff] [blame] | 8 | class SwervePublisherTest : public ::testing::Test { |
| 9 | public: |
| 10 | SwervePublisherTest() |
Nikolai Sohmers | 3cc1fc2 | 2024-05-04 12:27:58 -0700 | [diff] [blame^] | 11 | : config_(aos::configuration::ReadConfig("y2024_swerve/aos_config.json")), |
Maxwell Henderson | f63a0d9 | 2023-06-24 14:49:51 -0700 | [diff] [blame] | 12 | 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 Sohmers | 3cc1fc2 | 2024-05-04 12:27:58 -0700 | [diff] [blame^] | 23 | "y2024_swerve/swerve_drivetrain_output.json", 100) {} |
Maxwell Henderson | f63a0d9 | 2023-06-24 14:49:51 -0700 | [diff] [blame] | 24 | |
| 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 Sohmers | 3cc1fc2 | 2024-05-04 12:27:58 -0700 | [diff] [blame^] | 45 | y2024_swerve::SwervePublisher swerve_publisher_; |
Maxwell Henderson | f63a0d9 | 2023-06-24 14:49:51 -0700 | [diff] [blame] | 46 | }; |
| 47 | |
| 48 | TEST_F(SwervePublisherTest, CheckSentFb) { |
| 49 | SendOutput(); |
| 50 | CheckOutput(); |
| 51 | } |
Nikolai Sohmers | 3cc1fc2 | 2024-05-04 12:27:58 -0700 | [diff] [blame^] | 52 | } // namespace y2024_swerve::testing |