text: #include <drogon/HttpAppFramework.h>
  #include <drogon/drogon_test.h>
  #include <iostream>
  #include <string>
  
  using namespace drogon;
  
  struct TestCookie {
  	TestCookie(std::shared_ptr<test::CaseBase> ctx) :
  			TEST_CTX(ctx) {
  	}
  	~TestCookie() {
  		if (!taken)
  			FAIL("Test cookie not taken");
  		else
  			SUCCESS();
  	}
  	void take() {
  		taken = true;
  	}
  
  protected:
  	bool taken = false;
  	std::shared_ptr<test::CaseBase> TEST_CTX;
  };
  
  DROGON_TEST(MainLoopTest) {
  	auto cookie = std::make_shared<TestCookie>(TEST_CTX);
  	drogon::app().getLoop()->queueInLoop([cookie]() { cookie->take(); });
  
  	std::thread t([TEST_CTX]() {
  		auto cookie2 = std::make_shared<TestCookie>(TEST_CTX);
  		drogon::app().getLoop()->queueInLoop([cookie2]() { cookie2->take(); });
  	});
  	t.join();
  }
  