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

Commit 8f6f95cd 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

am: bf3785fe

Change-Id: Ib47f9c881e3c295bdbae7b34310a32a7b58ee842
parents 46fc4845 bf3785fe
Loading
Loading
Loading
Loading
+29 −0
Original line number Original line Diff line number Diff line
@@ -695,6 +695,35 @@ TEST_F(QueueTest, pass_smart_pointer_and_unregister) {
  });
  });
  future.wait();
  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
}  // namespace os
}  // namespace os
}  // namespace bluetooth
}  // namespace bluetooth