blob: 096dc9e6a6f4e9b0362f7ca95eea9dd1698e5a57 [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_(
Nikolai Sohmers3f2a5072024-06-08 14:05:59 -070019 event_loop_->MakeFetcher<frc971::control_loops::swerve::Output>(
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -070020 "/drivetrain")),
21 swerve_publisher_(event_loop_.get(), exit_handle_.get(),
Nikolai Sohmers3cc1fc22024-05-04 12:27:58 -070022 "y2024_swerve/swerve_drivetrain_output.json", 100) {}
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -070023
24 void SendOutput() { event_loop_factory_.Run(); }
25
26 void CheckOutput() {
27 drivetrain_swerve_output_fetcher_.Fetch();
28
29 ASSERT_TRUE(drivetrain_swerve_output_fetcher_.get() != nullptr)
30 << ": No drivetrain output";
31 }
32
33 private:
34 aos::FlatbufferDetachedBuffer<aos::Configuration> config_;
35 aos::SimulatedEventLoopFactory event_loop_factory_;
36 const aos::Node *const roborio_;
37
38 std::unique_ptr<aos::EventLoop> event_loop_;
39 std::unique_ptr<aos::ExitHandle> exit_handle_;
40
Nikolai Sohmers3f2a5072024-06-08 14:05:59 -070041 aos::Fetcher<frc971::control_loops::swerve::Output>
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -070042 drivetrain_swerve_output_fetcher_;
43
Nikolai Sohmers3cc1fc22024-05-04 12:27:58 -070044 y2024_swerve::SwervePublisher swerve_publisher_;
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -070045};
46
47TEST_F(SwervePublisherTest, CheckSentFb) {
48 SendOutput();
49 CheckOutput();
50}
Nikolai Sohmers3cc1fc22024-05-04 12:27:58 -070051} // namespace y2024_swerve::testing