@@ -40,6 +40,21 @@ using namespace ::testing;
4040
4141using TestEventOrFieldType = std::uint16_t ;
4242
43+ // / Constructs a service element (ProxyEvent / GenericProxyEvent / ProxyField) for testing, inserting the
44+ // / detail::WithTestTag disambiguator when the target type is a ProxyField.
45+ template <typename ServiceElementType, typename ProxyT, typename Binding>
46+ auto MakeServiceElementForTest (ProxyT& proxy, const char * name, Binding binding)
47+ {
48+ if constexpr (detail::is_proxy_field_v<ServiceElementType>)
49+ {
50+ return std::make_unique<ServiceElementType>(proxy, name, detail::WithTestTag{}, std::move (binding));
51+ }
52+ else
53+ {
54+ return std::make_unique<ServiceElementType>(proxy, name, std::move (binding));
55+ }
56+ }
57+
4358const ServiceTypeDeployment kEmptyTypeDeployment {score::cpp::blank{}};
4459const ServiceIdentifierType kFooservice {make_ServiceIdentifierType (" foo" )};
4560const auto kInstanceSpecifier = InstanceSpecifier::Create(std::string{" /dummy_instance_specifier" }).value();
@@ -73,8 +88,8 @@ class ProxyEventBaseFixture : public ::testing::Test
7388 auto mock_service_element_binding_ptr = std::make_unique<MockServiceElementType>();
7489 mock_service_element_binding_ = mock_service_element_binding_ptr.get ();
7590
76- service_element_ =
77- std::make_unique<ServiceElementType>( empty_proxy_, kEventName , std::move (mock_service_element_binding_ptr));
91+ service_element_ = MakeServiceElementForTest<ServiceElementType>(
92+ empty_proxy_, kEventName , std::move (mock_service_element_binding_ptr));
7893
7994 ON_CALL (*mock_service_element_binding_, SetReceiveHandler (_)).WillByDefault (Return (score::Result<void >{}));
8095 }
@@ -164,8 +179,9 @@ TYPED_TEST(ProxyEventBaseCreationFixture, CreatingServiceElementWithValidEventBi
164179 make_HandleType (make_InstanceIdentifier (kEmptyInstanceDeployment , kEmptyTypeDeployment )));
165180
166181 // When creating a ProxyEvent with a valid binding
167- auto service_element = std::make_unique<typename ProxyEventBaseCreationFixture<TypeParam>::ServiceElementType>(
168- dummy_proxy, kEventName , std::move (valid_proxy_event_binding));
182+ auto service_element =
183+ MakeServiceElementForTest<typename ProxyEventBaseCreationFixture<TypeParam>::ServiceElementType>(
184+ dummy_proxy, kEventName , std::move (valid_proxy_event_binding));
169185
170186 // Then the proxy should report that all bindings are valid
171187 EXPECT_TRUE (dummy_proxy.AreBindingsValid ());
@@ -178,10 +194,11 @@ TYPED_TEST(ProxyEventBaseCreationFixture, CreatingServiceElementWithInvalidEvent
178194 make_HandleType (make_InstanceIdentifier (kEmptyInstanceDeployment , kEmptyTypeDeployment )));
179195
180196 // When creating a ProxyEvent with an invalid binding
181- auto service_element = std::make_unique<typename ProxyEventBaseCreationFixture<TypeParam>::ServiceElementType>(
182- dummy_proxy,
183- kEventName ,
184- std::unique_ptr<typename ProxyEventBaseCreationFixture<TypeParam>::MockServiceElementType>(nullptr ));
197+ auto service_element =
198+ MakeServiceElementForTest<typename ProxyEventBaseCreationFixture<TypeParam>::ServiceElementType>(
199+ dummy_proxy,
200+ kEventName ,
201+ std::unique_ptr<typename ProxyEventBaseCreationFixture<TypeParam>::MockServiceElementType>(nullptr ));
185202
186203 // Then the proxy should report that all bindings are not valid
187204 EXPECT_FALSE (dummy_proxy.AreBindingsValid ());
@@ -197,8 +214,9 @@ TYPED_TEST(ProxyEventBaseCreationFixture, CreatingServiceElementWithInvalidProxy
197214 make_HandleType (make_InstanceIdentifier (kEmptyInstanceDeployment , kEmptyTypeDeployment )));
198215
199216 // When creating a ProxyEvent with a valid binding
200- auto service_element = std::make_unique<typename ProxyEventBaseCreationFixture<TypeParam>::ServiceElementType>(
201- dummy_proxy, kEventName , std::move (valid_proxy_event_binding));
217+ auto service_element =
218+ MakeServiceElementForTest<typename ProxyEventBaseCreationFixture<TypeParam>::ServiceElementType>(
219+ dummy_proxy, kEventName , std::move (valid_proxy_event_binding));
202220
203221 // Then the proxy should report that all bindings are not valid
204222 EXPECT_FALSE (dummy_proxy.AreBindingsValid ());
@@ -223,8 +241,9 @@ TYPED_TEST(ProxyEventBaseCreationFixture,
223241 make_HandleType (make_InstanceIdentifier (kEmptyInstanceDeployment , kEmptyTypeDeployment )));
224242
225243 // When creating a ProxyEvent with a valid binding
226- auto service_element = std::make_unique<typename ProxyEventBaseCreationFixture<TypeParam>::ServiceElementType>(
227- dummy_proxy, kEventName , std::move (valid_proxy_event_binding));
244+ auto service_element =
245+ MakeServiceElementForTest<typename ProxyEventBaseCreationFixture<TypeParam>::ServiceElementType>(
246+ dummy_proxy, kEventName , std::move (valid_proxy_event_binding));
228247}
229248
230249TYPED_TEST (ProxyEventBaseCreationFixture,
@@ -243,10 +262,10 @@ TYPED_TEST(ProxyEventBaseCreationFixture,
243262 make_HandleType (make_InstanceIdentifier (kEmptyInstanceDeployment , kEmptyTypeDeployment )));
244263
245264 // When creating a ProxyEvent with an invalid binding
246- auto service_element = std::make_unique< typename ProxyEventBaseCreationFixture<TypeParam>::ServiceElementType>(
247- dummy_proxy,
248- kEventName ,
249- std::unique_ptr<typename ProxyEventBaseCreationFixture<TypeParam>:: MockServiceElementType>(nullptr ));
265+ using ServiceElementType = typename ProxyEventBaseCreationFixture<TypeParam>::ServiceElementType;
266+ using MockServiceElementType = typename ProxyEventBaseCreationFixture<TypeParam>::MockServiceElementType;
267+ auto service_element = MakeServiceElementForTest<ServiceElementType>(
268+ dummy_proxy, kEventName , std::unique_ptr<MockServiceElementType>(nullptr ));
250269}
251270
252271TYPED_TEST (ProxyEventBaseUnsubscribeFixture, CallingUnsubscribeWhileSubscribedCallsUnsubscribeOnBinding)
@@ -357,8 +376,8 @@ class AServiceElement : public ::testing::Test
357376 auto mock_service_element_binding_ptr = std::make_unique<MockServiceElementType>();
358377 mock_service_element_binding_ = mock_service_element_binding_ptr.get ();
359378
360- service_element_ =
361- std::make_unique<ServiceElementType>( empty_proxy_, kEventName , std::move (mock_service_element_binding_ptr));
379+ service_element_ = MakeServiceElementForTest<ServiceElementType>(
380+ empty_proxy_, kEventName , std::move (mock_service_element_binding_ptr));
362381 ASSERT_NE (service_element_, nullptr );
363382
364383 ON_CALL (*mock_service_element_binding_, SetReceiveHandler (_)).WillByDefault (Return (score::Result<void >{}));
0 commit comments