diff options
Diffstat (limited to 'test/util/run_loop.cpp')
-rw-r--r-- | test/util/run_loop.cpp | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/test/util/run_loop.cpp b/test/util/run_loop.cpp new file mode 100644 index 0000000000..f00f7248b5 --- /dev/null +++ b/test/util/run_loop.cpp @@ -0,0 +1,75 @@ +#include <mbgl/util/run_loop.hpp> +#include <mbgl/util/timer.hpp> + +#include "../fixtures/util.hpp" + +using namespace mbgl::util; + +TEST(RunLoop, Stop) { + RunLoop loop(RunLoop::Type::New); + + Timer timer; + timer.start(mbgl::Duration::zero(), mbgl::Duration::zero(), [&] { + loop.stop(); + }); + + loop.run(); +} + +TEST(RunLoop, MultipleStop) { + RunLoop loop(RunLoop::Type::New); + + Timer timer; + timer.start(mbgl::Duration::zero(), mbgl::Duration::zero(), [&] { + loop.stop(); + loop.stop(); + loop.stop(); + loop.stop(); + }); + + loop.run(); +} + +TEST(RunLoop, UnrefShouldStop) { + RunLoop loop(RunLoop::Type::New); + + Timer timer; + timer.start(mbgl::Duration::zero(), mbgl::Duration::zero(), [&] { + loop.unref(); + }); + + loop.run(); +} + +TEST(RunLoop, RefUnref) { + RunLoop loop(RunLoop::Type::New); + + Timer timer; + auto zero = mbgl::Duration::zero(); + + auto cb3 = [&] { + loop.stop(); + }; + + auto cb2 = [&] { + loop.unref(); + loop.unref(); + + loop.ref(); + + timer.start(zero, zero, cb3); + }; + + auto cb1 = [&] { + loop.ref(); + loop.ref(); + + loop.unref(); + + timer.start(zero, zero, cb2); + }; + + timer.start(zero, zero, cb1); + + loop.run(); +} |