15 #include <gtest/gtest.h>
19 #include <range/v3/utility/common_tuple.hpp>
27 struct SimplestPossibleParticle {
32 struct ParticleWithMemberExtensions {
36 float&
state() {
return state_; }
37 [[nodiscard]]
float state()
const {
return state_; }
38 double&
weight() {
return weight_; }
39 [[nodiscard]]
double weight()
const {
return weight_; }
42 struct ParticleWithNonMemberExtensions {
52 [[maybe_unused]]
float&
state(ParticleWithNonMemberExtensions& p) {
55 [[maybe_unused]]
float state(
const ParticleWithNonMemberExtensions& p) {
58 [[maybe_unused]]
double&
weight(ParticleWithNonMemberExtensions& p) {
61 [[maybe_unused]]
double weight(
const ParticleWithNonMemberExtensions& p) {
68 class PrimitivesTest :
public testing::Test {};
70 using PrimitivesTestCases = testing::Types<
71 std::tuple<int, beluga::Weight>,
72 ranges::common_tuple<int, beluga::Weight>,
73 user::SimplestPossibleParticle,
74 user::ParticleWithMemberExtensions,
75 user::ParticleWithNonMemberExtensions>;
80 auto particle = TypeParam{};
88 const auto particle = TypeParam{4, 5};