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