blob: 44125cdbb99cd38afaefffa78f57e6638866a200 [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()),
James Kuszmauleaba6d92024-07-31 20:42:20 -070018 drivetrain_swerve_goal_fetcher_(
19 event_loop_->MakeFetcher<frc971::control_loops::swerve::Goal>(
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -070020 "/drivetrain")),
21 swerve_publisher_(event_loop_.get(), exit_handle_.get(),
James Kuszmauleaba6d92024-07-31 20:42:20 -070022 "y2024_swerve/swerve_drivetrain_goal.json", 100) {}
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -070023
24 void SendOutput() { event_loop_factory_.Run(); }
25
26 void CheckOutput() {
James Kuszmauleaba6d92024-07-31 20:42:20 -070027 drivetrain_swerve_goal_fetcher_.Fetch();
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -070028
James Kuszmauleaba6d92024-07-31 20:42:20 -070029 ASSERT_TRUE(drivetrain_swerve_goal_fetcher_.get() != nullptr)
30 << ": No drivetrain goal.";
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -070031 }
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
James Kuszmauleaba6d92024-07-31 20:42:20 -070041 aos::Fetcher<frc971::control_loops::swerve::Goal>
42 drivetrain_swerve_goal_fetcher_;
Maxwell Hendersonf63a0d92023-06-24 14:49:51 -070043
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