Skip to content

Commit e6cde63

Browse files
add factory method to create and start a dummy active object and manage the dummy with unique_ptr.
1 parent 3dfbfd0 commit e6cde63

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

cpputest-for-qpc-lib/include/cmsDummyActiveObject.hpp

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,10 @@
3030
#include <array>
3131
#include <functional>
3232
#include <cstdlib>
33+
#include <memory>
3334
#include "cmsVectorBackedQEQueue.hpp"
3435
#include "qevtUniquePtr.hpp"
36+
#include "cms_cpputest_qf_ctrl.hpp"
3537

3638
namespace cms {
3739
namespace test {
@@ -96,7 +98,7 @@ class DummyActiveObject {
9698
}
9799
}
98100

99-
void dummyStart(uint_fast8_t priority = 1)
101+
void dummyStart(uint_fast8_t priority = qf_ctrl::DUMMY_AO_A_PRIORITY)
100102
{
101103
QACTIVE_START(&m_super, priority,
102104
m_incomingEvents.data(), m_incomingEvents.size(),
@@ -180,6 +182,24 @@ class DummyActiveObject {
180182
};
181183

182184
using DefaultDummyActiveObject = DummyActiveObject<50>;
185+
using DefaultDummyActiveObjectUniquePtr =
186+
std::unique_ptr<DefaultDummyActiveObject>;
187+
188+
/**
189+
* Helper method to create (allocate) and start a dummy active
190+
* object
191+
* @param behavior
192+
* @param priority
193+
* @return ptr as unique_ptr.
194+
*/
195+
inline DefaultDummyActiveObjectUniquePtr CreateAndStartDummyActiveObject(
196+
DefaultDummyActiveObject::EventBehavior behavior = DefaultDummyActiveObject::EventBehavior::CALLBACK,
197+
uint_fast8_t priority = qf_ctrl::DUMMY_AO_A_PRIORITY)
198+
{
199+
auto dummy = std::make_unique<DefaultDummyActiveObject>(behavior);
200+
dummy->dummyStart(priority);
201+
return dummy;
202+
}
183203

184204
} // namespace test
185205
} // namespace cms

cpputest-for-qpc-lib/tests/cms_dummy_active_object_tests.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ TEST_GROUP(dummy_ao_tests)
2424

2525
TEST(dummy_ao_tests, dummy_ao_provides_callback_by_default)
2626
{
27-
auto dummy = std::make_unique<DefaultDummyActiveObject>();
28-
dummy->dummyStart();
27+
auto dummy = CreateAndStartDummyActiveObject();
2928
CHECK_TRUE(dummy->isRecorderEmpty());
3029
CHECK_FALSE(dummy->isAnyEventRecorded());
3130

@@ -42,8 +41,8 @@ TEST(dummy_ao_tests, dummy_ao_provides_callback_by_default)
4241

4342
TEST(dummy_ao_tests, dummy_ao_provides_recorder_option)
4443
{
45-
auto dummy = std::make_unique<DefaultDummyActiveObject>(DefaultDummyActiveObject::EventBehavior::RECORDER);
46-
dummy->dummyStart();
44+
auto dummy = CreateAndStartDummyActiveObject(
45+
DefaultDummyActiveObject::EventBehavior::RECORDER);
4746

4847
static constexpr enum_t TEST1_SIG = Q_USER_SIG + 1;
4948
static constexpr enum_t TEST2_SIG = TEST1_SIG + 1;

0 commit comments

Comments
 (0)