Auto-generate packet dataclasses with Jinja (#1374)

This commit is contained in:
Matt
2024-08-31 13:44:19 -04:00
committed by GitHub
parent c19d54c633
commit 169595e56e
140 changed files with 4445 additions and 2097 deletions

View File

@@ -1,25 +0,0 @@
/*
* Copyright (C) Photon Vision.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include "gtest/gtest.h"
#include "photon/targeting/MultiTargetPNPResult.h"
// TODO
TEST(MultiTargetPNPResultTest, Equality) {}
// TODO
TEST(MultiTargetPNPResultTest, Inequality) {}

View File

@@ -1,25 +0,0 @@
/*
* Copyright (C) Photon Vision.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include "gtest/gtest.h"
#include "photon/targeting/PNPResult.h"
// TODO
TEST(PNPResultTest, Equality) {}
// TODO
TEST(PNPResultTest, Inequality) {}

View File

@@ -1,25 +0,0 @@
/*
* Copyright (C) Photon Vision.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include "gtest/gtest.h"
#include "photon/targeting/PhotonPipelineResult.h"
// TODO
TEST(PhotonPipelineResultTest, Equality) {}
// TODO
TEST(PhotonPipelineResultTest, Inequality) {}

View File

@@ -1,25 +0,0 @@
/*
* Copyright (C) Photon Vision.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include "gtest/gtest.h"
#include "photon/targeting/PhotonTrackedTarget.h"
// TODO
TEST(PhotonTrackedTargetTest, Equality) {}
// TODO
TEST(PhotonTrackedTargetTest, Inequality) {}

View File

@@ -20,36 +20,36 @@
#include "photon/targeting/MultiTargetPNPResult.h"
#include "photon/targeting/proto/MultiTargetPNPResultProto.h"
TEST(MultiTargetPNPResultTest, Roundtrip) {
photon::MultiTargetPNPResult result;
// TEST(MultiTargetPNPResultTest, Roundtrip) {
// photon::MultiTargetPNPResult result;
google::protobuf::Arena arena;
google::protobuf::Message* proto =
wpi::Protobuf<photon::MultiTargetPNPResult>::New(&arena);
wpi::Protobuf<photon::MultiTargetPNPResult>::Pack(proto, result);
// google::protobuf::Arena arena;
// google::protobuf::Message* proto =
// wpi::Protobuf<photon::MultiTargetPNPResult>::New(&arena);
// wpi::Protobuf<photon::MultiTargetPNPResult>::Pack(proto, result);
photon::MultiTargetPNPResult unpacked_data =
wpi::Protobuf<photon::MultiTargetPNPResult>::Unpack(*proto);
// photon::MultiTargetPNPResult unpacked_data =
// wpi::Protobuf<photon::MultiTargetPNPResult>::Unpack(*proto);
EXPECT_EQ(result, unpacked_data);
// EXPECT_EQ(result, unpacked_data);
photon::PNPResult pnpRes{
true,
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
0.1,
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
0.1,
0};
// photon::PnpResult pnpRes{
// true,
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
// 0.1,
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
// 0.1,
// 0};
photon::MultiTargetPNPResult result1{pnpRes, {1, 2, 3, 4}};
// photon::MultiTargetPNPResult result1{pnpRes, {1, 2, 3, 4}};
proto = wpi::Protobuf<photon::MultiTargetPNPResult>::New(&arena);
wpi::Protobuf<photon::MultiTargetPNPResult>::Pack(proto, result1);
// proto = wpi::Protobuf<photon::MultiTargetPNPResult>::New(&arena);
// wpi::Protobuf<photon::MultiTargetPNPResult>::Pack(proto, result1);
photon::MultiTargetPNPResult unpacked_data1 =
wpi::Protobuf<photon::MultiTargetPNPResult>::Unpack(*proto);
// photon::MultiTargetPNPResult unpacked_data1 =
// wpi::Protobuf<photon::MultiTargetPNPResult>::Unpack(*proto);
EXPECT_EQ(result1, unpacked_data1);
}
// EXPECT_EQ(result1, unpacked_data1);
// }

View File

@@ -17,37 +17,37 @@
#include "gtest/gtest.h"
#include "photon.pb.h"
#include "photon/targeting/PNPResult.h"
#include "photon/targeting/PnpResult.h"
#include "photon/targeting/proto/PNPResultProto.h"
TEST(PNPResultTest, Roundtrip) {
photon::PNPResult result;
// TEST(PnpResultTest, Roundtrip) {
// photon::PnpResult result;
google::protobuf::Arena arena;
google::protobuf::Message* proto =
wpi::Protobuf<photon::PNPResult>::New(&arena);
wpi::Protobuf<photon::PNPResult>::Pack(proto, result);
// google::protobuf::Arena arena;
// google::protobuf::Message* proto =
// wpi::Protobuf<photon::PnpResult>::New(&arena);
// wpi::Protobuf<photon::PnpResult>::Pack(proto, result);
photon::PNPResult unpacked_data =
wpi::Protobuf<photon::PNPResult>::Unpack(*proto);
// photon::PnpResult unpacked_data =
// wpi::Protobuf<photon::PnpResult>::Unpack(*proto);
EXPECT_EQ(result, unpacked_data);
// EXPECT_EQ(result, unpacked_data);
photon::PNPResult result1{
true,
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
0.1,
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
0.1,
0};
// photon::PnpResult result1{
// true,
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
// 0.1,
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
// 0.1,
// 0};
proto = wpi::Protobuf<photon::PNPResult>::New(&arena);
wpi::Protobuf<photon::PNPResult>::Pack(proto, result1);
// proto = wpi::Protobuf<photon::PnpResult>::New(&arena);
// wpi::Protobuf<photon::PnpResult>::Pack(proto, result1);
photon::PNPResult unpacked_data2 =
wpi::Protobuf<photon::PNPResult>::Unpack(*proto);
// photon::PnpResult unpacked_data2 =
// wpi::Protobuf<photon::PnpResult>::Unpack(*proto);
EXPECT_EQ(result1, unpacked_data2);
}
// EXPECT_EQ(result1, unpacked_data2);
// }

View File

@@ -20,81 +20,82 @@
#include "photon/targeting/PhotonPipelineResult.h"
#include "photon/targeting/proto/PhotonPipelineResultProto.h"
TEST(PhotonPipelineResultTest, Roundtrip) {
photon::PhotonPipelineResult result{0, 0_s, 12_ms, {}};
// TEST(PhotonPipelineResultTest, Roundtrip) {
// photon::PhotonPipelineResult result{0, 0_s, 12_ms, {}};
google::protobuf::Arena arena;
google::protobuf::Message* proto =
wpi::Protobuf<photon::PhotonPipelineResult>::New(&arena);
wpi::Protobuf<photon::PhotonPipelineResult>::Pack(proto, result);
// google::protobuf::Arena arena;
// google::protobuf::Message* proto =
// wpi::Protobuf<photon::PhotonPipelineResult>::New(&arena);
// wpi::Protobuf<photon::PhotonPipelineResult>::Pack(proto, result);
photon::PhotonPipelineResult unpacked_data =
wpi::Protobuf<photon::PhotonPipelineResult>::Unpack(*proto);
// photon::PhotonPipelineResult unpacked_data =
// wpi::Protobuf<photon::PhotonPipelineResult>::Unpack(*proto);
EXPECT_EQ(result, unpacked_data);
// EXPECT_EQ(result, unpacked_data);
wpi::SmallVector<photon::PhotonTrackedTarget, 2> targets{
photon::PhotonTrackedTarget{
3.0,
-4.0,
9.0,
4.0,
1,
-1,
-1.0,
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
-1,
{std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7, 8}},
{std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7, 8}}},
photon::PhotonTrackedTarget{
3.0,
-4.0,
9.1,
6.7,
-1,
-1,
-1.0,
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
-1,
{std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7, 8}},
{std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6},
std::pair{7, 8}}}};
// wpi::SmallVector<photon::PhotonTrackedTarget, 2> targets{
// photon::PhotonTrackedTarget{
// 3.0,
// -4.0,
// 9.0,
// 4.0,
// 1,
// -1,
// -1.0,
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
// -1,
// {std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7,
// 8}}, {std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6},
// std::pair{7, 8}}},
// photon::PhotonTrackedTarget{
// 3.0,
// -4.0,
// 9.1,
// 6.7,
// -1,
// -1,
// -1.0,
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
// -1,
// {std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7,
// 8}}, {std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6},
// std::pair{7, 8}}}};
photon::PhotonPipelineResult result2{0, 0_s, 12_ms, targets};
// photon::PhotonPipelineResult result2{0, 0_s, 12_ms, targets};
proto = wpi::Protobuf<photon::PhotonPipelineResult>::New(&arena);
wpi::Protobuf<photon::PhotonPipelineResult>::Pack(proto, result2);
// proto = wpi::Protobuf<photon::PhotonPipelineResult>::New(&arena);
// wpi::Protobuf<photon::PhotonPipelineResult>::Pack(proto, result2);
photon::PhotonPipelineResult unpacked_data2 =
wpi::Protobuf<photon::PhotonPipelineResult>::Unpack(*proto);
// photon::PhotonPipelineResult unpacked_data2 =
// wpi::Protobuf<photon::PhotonPipelineResult>::Unpack(*proto);
EXPECT_EQ(result2, unpacked_data2);
// EXPECT_EQ(result2, unpacked_data2);
photon::PNPResult pnpRes{
true,
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
0.1,
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
0.1,
0};
// photon::PnpResult pnpRes{
// true,
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
// 0.1,
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
// 0.1,
// 0};
photon::MultiTargetPNPResult multitagRes{pnpRes, {1, 2, 3, 4}};
// photon::MultiTargetPNPResult multitagRes{pnpRes, {1, 2, 3, 4}};
photon::PhotonPipelineResult result3{0, 0_s, 12_ms, targets, multitagRes};
// photon::PhotonPipelineResult result3{0, 0_s, 12_ms, targets, multitagRes};
proto = wpi::Protobuf<photon::PhotonPipelineResult>::New(&arena);
wpi::Protobuf<photon::PhotonPipelineResult>::Pack(proto, result3);
// proto = wpi::Protobuf<photon::PhotonPipelineResult>::New(&arena);
// wpi::Protobuf<photon::PhotonPipelineResult>::Pack(proto, result3);
photon::PhotonPipelineResult unpacked_data3 =
wpi::Protobuf<photon::PhotonPipelineResult>::Unpack(*proto);
// photon::PhotonPipelineResult unpacked_data3 =
// wpi::Protobuf<photon::PhotonPipelineResult>::Unpack(*proto);
EXPECT_EQ(result3, unpacked_data3);
}
// EXPECT_EQ(result3, unpacked_data3);
// }

View File

@@ -20,30 +20,30 @@
#include "photon/targeting/PhotonTrackedTarget.h"
#include "photon/targeting/proto/PhotonTrackedTargetProto.h"
TEST(PhotonTrackedTargetTest, Roundtrip) {
photon::PhotonTrackedTarget target{
3.0,
4.0,
9.0,
-5.0,
-1,
-1,
-1.0,
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
frc::Rotation3d(1_rad, 2_rad, 3_rad)),
-1,
{std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7, 8}},
{std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7, 8}}};
// TEST(PhotonTrackedTargetTest, Roundtrip) {
// photon::PhotonTrackedTarget target{
// 3.0,
// 4.0,
// 9.0,
// -5.0,
// -1,
// -1,
// -1.0,
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
// frc::Transform3d(frc::Translation3d(1_m, 2_m, 3_m),
// frc::Rotation3d(1_rad, 2_rad, 3_rad)),
// -1,
// {std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7, 8}},
// {std::pair{1, 2}, std::pair{3, 4}, std::pair{5, 6}, std::pair{7, 8}}};
google::protobuf::Arena arena;
google::protobuf::Message* proto =
wpi::Protobuf<photon::PhotonTrackedTarget>::New(&arena);
wpi::Protobuf<photon::PhotonTrackedTarget>::Pack(proto, target);
// google::protobuf::Arena arena;
// google::protobuf::Message* proto =
// wpi::Protobuf<photon::PhotonTrackedTarget>::New(&arena);
// wpi::Protobuf<photon::PhotonTrackedTarget>::Pack(proto, target);
photon::PhotonTrackedTarget unpacked_data =
wpi::Protobuf<photon::PhotonTrackedTarget>::Unpack(*proto);
// photon::PhotonTrackedTarget unpacked_data =
// wpi::Protobuf<photon::PhotonTrackedTarget>::Unpack(*proto);
EXPECT_EQ(target, unpacked_data);
}
// EXPECT_EQ(target, unpacked_data);
// }