#pragma once #include /** * Minimal Glib application to be used for tests that require Glib main loop */ class GlibTestsFixture : public sigc::trackable { public: GlibTestsFixture() : main_loop_{Glib::MainLoop::create()} {} void setTimeout(int timeout) { Glib::signal_timeout().connect_once([]() { throw std::runtime_error("Test timed out"); }, timeout); } void run(std::function fn) { Glib::signal_idle().connect_once(fn); main_loop_->run(); } void quit() { main_loop_->quit(); } protected: Glib::RefPtr main_loop_; };