xref: /openbmc/telemetry/tests/src/test_ensure.cpp (revision bcf045a4)
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 Grobelny TEST_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 Grobelny TEST_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