@@ -30,6 +30,11 @@ enum Color
3030 Blue
3131};
3232
33+ struct SingleValueRecord
34+ {
35+ int value;
36+ };
37+
3338TEST_CASE (" GetName" , " [reflection]" )
3439{
3540 auto const enumValue = Reflection::GetName<Color::Red>();
@@ -38,13 +43,34 @@ TEST_CASE("GetName", "[reflection]")
3843 auto const enumValue2 = Reflection::GetName<Color::Green>();
3944 CHECK (enumValue2 == " Green" );
4045
41- auto const person = Person {
" John Doe" ,
" [email protected] " ,
42 };
4246 auto const memberName1 = Reflection::GetName<&Person::email>();
4347 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+ });
4467}
4568
4669TEST_CASE (" core" , " [reflection]" )
4770{
71+ auto s = SingleValueRecord { 42 };
72+ CHECK (Reflection::Inspect (s) == " value=42" );
73+
4874 auto p = Person {
" John Doe" ,
" [email protected] " ,
42 };
4975 auto const result = Reflection::Inspect (p);
5076 CHECK (result ==
R"( name="John Doe" email="[email protected] " age=42)" );
0 commit comments