Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bf3785fe authored by Myles Watson's avatar Myles Watson Committed by android-build-merger
Browse files

OS: Add death tests for en/de-queue registration

am: 8e0ae91a

Change-Id: Ifcbaec5cd56ec89e1a4a965e8b53b38a085f51bf
parents b0b1639b 8e0ae91a
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
@@ -695,6 +695,35 @@ TEST_F(QueueTest, pass_smart_pointer_and_unregister) {
  });
  future.wait();
}

// Create all threads for death tests in the function that dies
class QueueDeathTest : public ::testing::Test {
 public:
  void RegisterEnqueueAndDelete() {
    Thread* enqueue_thread = new Thread("enqueue_thread", Thread::Priority::NORMAL);
    Handler* enqueue_handler = new Handler(enqueue_thread);
    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"); });
    delete queue;
  }

  void RegisterDequeueAndDelete() {
    Thread* dequeue_thread = new Thread("dequeue_thread", Thread::Priority::NORMAL);
    Handler* dequeue_handler = new Handler(dequeue_thread);
    Queue<std::string>* queue = new Queue<std::string>(kQueueSizeOne);
    queue->RegisterDequeue(dequeue_handler, [queue]() { queue->TryDequeue(); });
    delete queue;
  }
};

TEST_F(QueueDeathTest, die_if_enqueue_not_unregistered) {
  EXPECT_DEATH(RegisterEnqueueAndDelete(), "nqueue");
}

TEST_F(QueueDeathTest, die_if_dequeue_not_unregistered) {
  EXPECT_DEATH(RegisterDequeueAndDelete(), "equeue");
}
}  // namespace
}  // namespace os
}  // namespace bluetooth