reflect_test.cpp 694 B

1234567891011121314151617181920212223242526272829303132
  1. #include "reflect/reflect.hpp"
  2. #include <gmock/gmock.h>
  3. struct example {
  4. int a;
  5. int b;
  6. };
  7. CREATE_REFLECTION(example, (a), (b, "c"));
  8. using testing::Eq;
  9. using testing::NotNull;
  10. TEST(ReflectionTest, BindsParameterByName) {
  11. EXPECT_TRUE(reflection<example>::exists<int>("a"));
  12. }
  13. TEST(ReflectionTest, CanRenameParameter) {
  14. EXPECT_FALSE(reflection<example>::exists<int>("b"));
  15. EXPECT_TRUE(reflection<example>::exists<int>("c"));
  16. }
  17. TEST(ReflectionTest, CanAccessMember) {
  18. auto p = reflection<example>::get_pointer<int>("a");
  19. EXPECT_THAT(p, NotNull());
  20. EXPECT_THAT(p, Eq(&example::a));
  21. example ex = { 5, 6 };
  22. EXPECT_THAT(&(ex.*p), Eq(&ex.a));
  23. EXPECT_THAT(ex.*p, Eq(5));
  24. }