#include "reflect/reflect.hpp" #include struct example { int a; int b; }; CREATE_REFLECTION(example, (a), (b, "c")); using testing::Eq; using testing::NotNull; TEST(ReflectionTest, BindsParameterByName) { EXPECT_TRUE(reflection::exists("a")); } TEST(ReflectionTest, CanRenameParameter) { EXPECT_FALSE(reflection::exists("b")); EXPECT_TRUE(reflection::exists("c")); } TEST(ReflectionTest, CanAccessMember) { auto p = reflection::get_pointer("a"); EXPECT_THAT(p, NotNull()); EXPECT_THAT(p, Eq(&example::a)); example ex = { 5, 6 }; EXPECT_THAT(&(ex.*p), Eq(&ex.a)); EXPECT_THAT(ex.*p, Eq(5)); }