@@ -30,6 +30,11 @@ enum Color
30
30
Blue
31
31
};
32
32
33
+ struct SingleValueRecord
34
+ {
35
+ int value;
36
+ };
37
+
33
38
TEST_CASE (" GetName" , " [reflection]" )
34
39
{
35
40
auto const enumValue = Reflection::GetName<Color::Red>();
@@ -38,13 +43,34 @@ TEST_CASE("GetName", "[reflection]")
38
43
auto const enumValue2 = Reflection::GetName<Color::Green>();
39
44
CHECK (enumValue2 == " Green" );
40
45
41
- auto const person = Person {
" John Doe" ,
" [email protected] " ,
42 };
42
46
auto const memberName1 = Reflection::GetName<&Person::email>();
43
47
CHECK (memberName1 == " email" );
48
+
49
+ auto const singleValueField = Reflection::GetName<&SingleValueRecord::value>();
50
+ CHECK (singleValueField == " value" );
51
+ }
52
+
53
+ TEST_CASE (" single value record" , " [reflection]" )
54
+ {
55
+ static_assert (Reflection::CountMembers<SingleValueRecord> == 1 );
56
+
57
+ auto const s = SingleValueRecord { 42 };
58
+ auto const t = Reflection::ToTuple (s);
59
+
60
+ CHECK (std::get<0 >(t) == 42 );
61
+ CHECK (Reflection::GetMemberAt<0 >(s) == 42 );
62
+
63
+ Reflection::CallOnMembers (s, [](auto && name, auto && value) {
64
+ CHECK (name == " value" );
65
+ CHECK (value == 42 );
66
+ });
44
67
}
45
68
46
69
TEST_CASE (" core" , " [reflection]" )
47
70
{
71
+ auto s = SingleValueRecord { 42 };
72
+ CHECK (Reflection::Inspect (s) == " value=42" );
73
+
48
74
auto p = Person {
" John Doe" ,
" [email protected] " ,
42 };
49
75
auto const result = Reflection::Inspect (p);
50
76
CHECK (result ==
R"( name="John Doe" email="[email protected] " age=42)" );
0 commit comments