11cdd7e4fSSzymon Dompke #include "helpers.hpp" 2f7ea2997SKrzysztof Grobelny #include "utils/ensure.hpp" 3f7ea2997SKrzysztof Grobelny 4f7ea2997SKrzysztof Grobelny #include <gmock/gmock.h> 5f7ea2997SKrzysztof Grobelny 6f7ea2997SKrzysztof Grobelny using namespace testing; 7f7ea2997SKrzysztof Grobelny 8f7ea2997SKrzysztof Grobelny class TestEnsure : public Test 9f7ea2997SKrzysztof Grobelny { 10f7ea2997SKrzysztof Grobelny public: 11f7ea2997SKrzysztof Grobelny utils::Ensure<std::function<void()>> sut; 12*bcf045a4SSzymon Dompke 13f7ea2997SKrzysztof Grobelny size_t executed = 0u; 14f7ea2997SKrzysztof Grobelny }; 15f7ea2997SKrzysztof Grobelny TEST_F(TestEnsure,executesCallbackOnceWhenDestroyed)16f7ea2997SKrzysztof GrobelnyTEST_F(TestEnsure, executesCallbackOnceWhenDestroyed) 17f7ea2997SKrzysztof Grobelny { 18*bcf045a4SSzymon Dompke sut = [this] { ++executed; }; 19f7ea2997SKrzysztof Grobelny sut = nullptr; 20f7ea2997SKrzysztof Grobelny 21f7ea2997SKrzysztof Grobelny EXPECT_THAT(executed, Eq(1u)); 22f7ea2997SKrzysztof Grobelny } 23f7ea2997SKrzysztof Grobelny TEST_F(TestEnsure,executesCallbackTwiceWhenNewCallbackAssigned)24f7ea2997SKrzysztof GrobelnyTEST_F(TestEnsure, executesCallbackTwiceWhenNewCallbackAssigned) 25f7ea2997SKrzysztof Grobelny { 26*bcf045a4SSzymon Dompke sut = [this] { ++executed; }; 27f7ea2997SKrzysztof Grobelny sut = [this] { executed += 10; }; 28f7ea2997SKrzysztof Grobelny sut = nullptr; 29f7ea2997SKrzysztof Grobelny 30f7ea2997SKrzysztof Grobelny EXPECT_THAT(executed, Eq(11u)); 31f7ea2997SKrzysztof Grobelny } 32