From a11f7d6ef3a8ff00371346412ca9b3b72f17ce15 Mon Sep 17 00:00:00 2001 From: "Thiago Marcos P. Santos" Date: Wed, 20 Jan 2016 17:49:25 +0200 Subject: [tests] Added utests for RunLoop refcounting --- test/miscellaneous/run_loop.cpp | 75 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 test/miscellaneous/run_loop.cpp (limited to 'test/miscellaneous') diff --git a/test/miscellaneous/run_loop.cpp b/test/miscellaneous/run_loop.cpp new file mode 100644 index 0000000000..f00f7248b5 --- /dev/null +++ b/test/miscellaneous/run_loop.cpp @@ -0,0 +1,75 @@ +#include +#include + +#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(); +} -- cgit v1.2.1