| #include <sdeventplus/source/event.hpp> |
| #include <sdeventplus/utility/sdbus.hpp> |
| |
| #include <gtest/gtest.h> |
| |
| namespace sdeventplus::utility |
| { |
| |
| struct LoopWithBus : testing::Test |
| { |
| Event event = Event::get_new(); |
| sdbusplus::bus_t bus = sdbusplus::bus::new_bus(); |
| }; |
| |
| TEST_F(LoopWithBus, ImmediateExit) |
| { |
| event.exit(0); |
| EXPECT_EQ(0, loopWithBus(event, bus)); |
| } |
| |
| TEST_F(LoopWithBus, DelayedExit) |
| { |
| source::Defer(event, [](source::EventBase& b) { |
| b.get_event().exit(1); |
| }).set_floating(true); |
| EXPECT_EQ(1, loopWithBus(event, bus)); |
| } |
| |
| TEST_F(LoopWithBus, ExitSources) |
| { |
| int d1 = 0, d2 = 0; |
| source::Exit(event, [&](source::EventBase&) { d1 = 1; }).set_floating(true); |
| source::Defer(event, [&](source::EventBase& b) { |
| source::Exit(event, [&](source::EventBase&) { |
| d2 = 2; |
| }).set_floating(true); |
| b.get_event().exit(3); |
| }).set_floating(true); |
| EXPECT_EQ(3, loopWithBus(event, bus)); |
| EXPECT_EQ(1, d1); |
| EXPECT_EQ(2, d2); |
| } |
| |
| } // namespace sdeventplus::utility |