diff options
Diffstat (limited to 'system/gd/os/linux_generic/queue_unittest.cc')
-rw-r--r-- | system/gd/os/linux_generic/queue_unittest.cc | 41 |
1 files changed, 37 insertions, 4 deletions
diff --git a/system/gd/os/linux_generic/queue_unittest.cc b/system/gd/os/linux_generic/queue_unittest.cc index e0cd6e0a17..9c1852797b 100644 --- a/system/gd/os/linux_generic/queue_unittest.cc +++ b/system/gd/os/linux_generic/queue_unittest.cc @@ -57,13 +57,31 @@ class QueueTest : public ::testing::Test { Handler* dequeue_handler_; }; +class QueueTestSingleThread : public ::testing::Test { + protected: + void SetUp() override { + reactor_ = new Reactor(); + enqueue_handler_ = new Handler(reactor_); + dequeue_handler_ = new Handler(reactor_); + } + void TearDown() override { + delete enqueue_handler_; + delete dequeue_handler_; + delete reactor_; + enqueue_handler_ = nullptr; + dequeue_handler_ = nullptr; + reactor_ = nullptr; + } + Reactor* reactor_; + Handler* enqueue_handler_; + Handler* dequeue_handler_; +}; + class TestEnqueueEnd { public: explicit TestEnqueueEnd(Queue<std::string>* queue, Handler* handler) : count(0), handler_(handler), queue_(queue), delay_(0) {} - ~TestEnqueueEnd() {} - void RegisterEnqueue(std::unordered_map<int, std::promise<int>>* promise_map) { promise_map_ = promise_map; handler_->Post([this] { queue_->RegisterEnqueue(handler_, [this] { return EnqueueCallbackForTest(); }); }); @@ -120,8 +138,6 @@ class TestDequeueEnd { explicit TestDequeueEnd(Queue<std::string>* queue, Handler* handler, int capacity) : count(0), handler_(handler), queue_(queue), capacity_(capacity), delay_(0) {} - ~TestDequeueEnd() {} - void RegisterDequeue(std::unordered_map<int, std::promise<int>>* promise_map) { promise_map_ = promise_map; handler_->Post([this] { queue_->RegisterDequeue(handler_, [this] { DequeueCallbackForTest(); }); }); @@ -695,6 +711,23 @@ TEST_F(QueueTest, pass_smart_pointer_and_unregister) { }); future.wait(); } + +TEST_F(QueueTestSingleThread, no_unregister_enqueue_death_test) { + Queue<std::string>* queue = new Queue<std::string>(kQueueSizeOne); + + queue->RegisterEnqueue(enqueue_handler_, + []() { return std::make_unique<std::string>("A string to fill the queue"); }); + + EXPECT_DEATH(delete queue, "nqueue"); +} + +TEST_F(QueueTestSingleThread, no_unregister_dequeue_death_test) { + Queue<std::string>* queue = new Queue<std::string>(kQueueSize); + + queue->RegisterDequeue(dequeue_handler_, []() {}); + + EXPECT_DEATH(delete queue, "equeue"); +} } // namespace } // namespace os } // namespace bluetooth |