1 #include "utils/unique_call.hpp" 2 3 #include <gmock/gmock.h> 4 5 namespace utils 6 { 7 8 using namespace testing; 9 10 class TestUniqueCall : public Test 11 { 12 public: 13 void uniqueCallIncrementCounter() 14 { 15 uniqueCall1([this](auto context) { ++counter; }); 16 } 17 18 void uniqueCallWhileUniqueCallIsActiveIncrementCounter() 19 { 20 uniqueCall2([this](auto context) { 21 ++counter; 22 uniqueCallWhileUniqueCallIsActiveIncrementCounter(); 23 }); 24 } 25 26 UniqueCall uniqueCall1; 27 UniqueCall uniqueCall2; 28 uint32_t counter = 0u; 29 }; 30 31 TEST_F(TestUniqueCall, shouldExecuteNormally) 32 { 33 for (size_t i = 0; i < 3u; ++i) 34 { 35 uniqueCallIncrementCounter(); 36 } 37 38 ASSERT_THAT(counter, Eq(3u)); 39 } 40 41 TEST_F(TestUniqueCall, shouldNotExecuteWhenPreviousExecutionIsStillActive) 42 { 43 for (size_t i = 0; i < 3u; ++i) 44 { 45 uniqueCallWhileUniqueCallIsActiveIncrementCounter(); 46 } 47 48 ASSERT_THAT(counter, Eq(3u)); 49 } 50 51 } // namespace utils 52