SpiecsEngine
 
Loading...
Searching...
No Matches

◆ TEST() [22/59]

SpicesTest::TEST ( FunctionTraitsTest_test ,
function_traits  )

Testing Spices::function_traits.

Definition at line 47 of file FunctionTraits_test.h.

47 {
48
50
51 {
53
54 constexpr bool v0 = std::is_same_v<trait::Params, Spices::type_list<int, float>>;
55 constexpr bool v1 = std::is_same_v<trait::ReturnType, bool>;
56 constexpr bool v2 = std::is_same_v<trait::ParamsWithClass, Spices::type_list<FunctionTraitsTestClass*, int, float>>;
57 constexpr bool v3 = std::is_same_v<trait::Pointer, bool(FunctionTraitsTestClass::*)(int, float)>;
58 constexpr bool v4 = std::is_same_v<trait::Type, bool(FunctionTraitsTestClass::*)(int, float)>;
59
60 EXPECT_EQ(v0, true);
61 EXPECT_EQ(v1, true);
62 EXPECT_EQ(v2, true);
63 EXPECT_EQ(v3, true);
64 EXPECT_EQ(v4, true);
65
66 EXPECT_EQ(trait::is_const, false);
67 EXPECT_EQ(trait::is_member, true);
68 }
69
70 {
72
73 constexpr bool v0 = std::is_same_v<trait::Params, Spices::type_list<int, float, void*>>;
74 constexpr bool v1 = std::is_same_v<trait::ReturnType, int>;
75 constexpr bool v2 = std::is_same_v<trait::Class, FunctionTraitsTestClass>;
76 constexpr bool v3 = std::is_same_v<trait::ParamsWithClass, Spices::type_list<FunctionTraitsTestClass*, int, float, void*>>;
77 constexpr bool v4 = std::is_same_v<trait::Pointer, int(FunctionTraitsTestClass::*)(int, float, void*)>;
78 constexpr bool v5 = std::is_same_v<trait::Type, int(FunctionTraitsTestClass::*)(int, float, void*)>;
79
80 EXPECT_EQ(v0, true);
81 EXPECT_EQ(v1, true);
82 EXPECT_EQ(v2, true);
83 EXPECT_EQ(v3, true);
84 EXPECT_EQ(v4, true);
85 EXPECT_EQ(v5, true);
86
87 EXPECT_EQ(trait::is_const, false);
88 EXPECT_EQ(trait::is_member, true);
89 }
90
91 {
92 using trait = Spices::function_traits<decltype(&FunctionTraitsTestClass::fc)>;
93
94 constexpr bool v0 = std::is_same_v<trait::Params, Spices::type_list<int, float, void*>>;
95 constexpr bool v1 = std::is_same_v<trait::ReturnType, bool>;
96 constexpr bool v2 = std::is_same_v<trait::Class, FunctionTraitsTestClass>;
97 constexpr bool v3 = std::is_same_v<trait::ParamsWithClass, Spices::type_list<FunctionTraitsTestClass*, int, float, void*>>;
98 constexpr bool v4 = std::is_same_v<trait::Pointer, bool(FunctionTraitsTestClass::*)(int, float, void*) const>;
99 constexpr bool v5 = std::is_same_v<trait::Type, bool(FunctionTraitsTestClass::*)(int, float, void*) const>;
100
101 EXPECT_EQ(v0, true);
102 EXPECT_EQ(v1, true);
103 EXPECT_EQ(v2, true);
104 EXPECT_EQ(v3, true);
105 EXPECT_EQ(v4, true);
106 EXPECT_EQ(v5, true);
107
108 EXPECT_EQ(trait::is_const, true);
109 EXPECT_EQ(trait::is_member, true);
110 }
111
112 {
113 using trait = Spices::function_traits<decltype(&FunctionTraitsTestClass::sf)>;
114
115 constexpr bool v0 = std::is_same_v<trait::Params, Spices::type_list<int, float, void*>>;
116 constexpr bool v1 = std::is_same_v<trait::ReturnType, bool>;
117 constexpr bool v2 = std::is_same_v<trait::Class, void>;
118 constexpr bool v3 = std::is_same_v<trait::ParamsWithClass, Spices::type_list<int, float, void*>>;
119 constexpr bool v4 = std::is_same_v<trait::Pointer, bool(*)(int, float, void*)>;
120 constexpr bool v5 = std::is_same_v<trait::Type, bool(*)(int, float, void*)>;
121
122 EXPECT_EQ(v0, true);
123 EXPECT_EQ(v1, true);
124 EXPECT_EQ(v2, true);
125 EXPECT_EQ(v3, true);
126 EXPECT_EQ(v4, true);
127 EXPECT_EQ(v5, true);
128
129 EXPECT_EQ(trait::is_const, false);
130 EXPECT_EQ(trait::is_member, false);
131 }
132
133 {
134 using trait = Spices::function_traits<int(FunctionTraitsTestClass::*)(int(*)(float, void*), float, void*)>;
135
136 constexpr bool v0 = std::is_same_v<trait::Params, Spices::type_list<int(*)(float, void*), float, void*>>;
137 constexpr bool v1 = std::is_same_v<trait::ReturnType, int>;
138 constexpr bool v2 = std::is_same_v<trait::Class, FunctionTraitsTestClass>;
139 constexpr bool v3 = std::is_same_v<trait::ParamsWithClass, Spices::type_list<FunctionTraitsTestClass*, int(*)(float, void*), float, void*>>;
140 constexpr bool v4 = std::is_same_v<trait::Pointer, int(FunctionTraitsTestClass::*)(int(*)(float, void*), float, void*)>;
141 constexpr bool v5 = std::is_same_v<trait::Type, int(FunctionTraitsTestClass::*)(int(*)(float, void*), float, void*)>;
142
143 EXPECT_EQ(v0, true);
144 EXPECT_EQ(v1, true);
145 EXPECT_EQ(v2, true);
146 EXPECT_EQ(v3, true);
147 EXPECT_EQ(v4, true);
148 EXPECT_EQ(v5, true);
149
150 EXPECT_EQ(trait::is_const, false);
151 EXPECT_EQ(trait::is_member, true);
152 }
153
154 {
155 using trait = Spices::function_traits<decltype(static_cast<bool(*)(int, float)>(&FunctionTraitsTestN::f))>;
156
157 constexpr bool v0 = std::is_same_v<trait::Params, Spices::type_list<int, float>>;
158 constexpr bool v1 = std::is_same_v<trait::ReturnType, bool>;
159 constexpr bool v2 = std::is_same_v<trait::Class, void>;
160 constexpr bool v3 = std::is_same_v<trait::ParamsWithClass, Spices::type_list<int, float>>;
161 constexpr bool v4 = std::is_same_v<trait::Pointer, bool(*)(int, float)>;
162 constexpr bool v5 = std::is_same_v<trait::Type, bool(*)(int, float)>;
163
164 EXPECT_EQ(v0, true);
165 EXPECT_EQ(v1, true);
166 EXPECT_EQ(v2, true);
167 EXPECT_EQ(v3, true);
168 EXPECT_EQ(v4, true);
169 EXPECT_EQ(v5, true);
170
171 EXPECT_EQ(trait::is_const, false);
172 EXPECT_EQ(trait::is_member, false);
173 }
174
175 {
176 using trait = Spices::function_traits<decltype(&FunctionTraitsTestN::sf)>;
177
178 constexpr bool v0 = std::is_same_v<trait::Params, Spices::type_list<int, float, void*>>;
179 constexpr bool v1 = std::is_same_v<trait::ReturnType, bool>;
180 constexpr bool v2 = std::is_same_v<trait::Class, void>;
181 constexpr bool v3 = std::is_same_v<trait::ParamsWithClass, Spices::type_list<int, float, void*>>;
182 constexpr bool v4 = std::is_same_v<trait::Pointer, bool(*)(int, float, void*)>;
183 constexpr bool v5 = std::is_same_v<trait::Type, bool(*)(int, float, void*)>;
184
185 EXPECT_EQ(v0, true);
186 EXPECT_EQ(v1, true);
187 EXPECT_EQ(v2, true);
188 EXPECT_EQ(v3, true);
189 EXPECT_EQ(v4, true);
190 EXPECT_EQ(v5, true);
191
192 EXPECT_EQ(trait::is_const, false);
193 EXPECT_EQ(trait::is_member, false);
194 }
195 }
#define SPICESTEST_PROFILE_FUNCTION()
Declare of function_traits.
Container of store Types.
Definition TypeList.h:20

References SpicesTest::FunctionTraitsTestClass::f(), SpicesTest::FunctionTraitsTestN::f(), SpicesTest::FunctionTraitsTestClass::f(), SpicesTest::FunctionTraitsTestClass::fc(), SpicesTest::FunctionTraitsTestClass::sf(), and SpicesTest::FunctionTraitsTestN::sf().