////
//// Created by xxx on 2025/2/10.
////
//
//// 测试队列的构造函数
// TEST(FutureCompletingBlockingQueueTest, ConstructorTest) {
// FutureCompletingBlockingQueue<int*> queue(5);
// EXPECT_EQ(queue.size(), 0);
// EXPECT_EQ(queue.remainingCapacity(), 5);
// EXPECT_TRUE(queue.isEmpty());
// }
//
//// 测试入队和出队操作
// TEST(FutureCompletingBlockingQueueTest, EnqueueDequeueTest) {
// FutureCompletingBlockingQueue<int*> queue(5);
// int* element = new int(10);
// queue.put(0, element);
// EXPECT_EQ(queue.size(), 1);
// EXPECT_EQ(queue.remainingCapacity(), 4);
// EXPECT_FALSE(queue.isEmpty());
//
// int* dequeuedElement = queue.poll();
// EXPECT_EQ(*dequeuedElement, 10);
// EXPECT_EQ(queue.size(), 0);
// EXPECT_EQ(queue.remainingCapacity(), 5);
// EXPECT_TRUE(queue.isEmpty());
//
// delete dequeuedElement; // 释放内存
// }
//
//// 测试队列满时 put 阻塞,poll 后唤醒的场景
// TEST(FutureCompletingBlockingQueueTest, BlockingPutAndWakeUpTest) {
// // 创建一个容量为 1 的队列
// FutureCompletingBlockingQueue<int*> queue(1);
// std::atomic<bool> putCompleted(false);
// std::atomic<bool> pollDone(false);
//
// // 创建元素
// int* initialElement = new int(20);
// int* element = new int(10);
//
// // 主线程先将一个元素放入队列,使队列满
// bool initialPutResult = queue.put(0, initialElement);
// EXPECT_TRUE(initialPutResult);
//
// // 启动一个线程进行 put 操作,此时队列已满会阻塞
// std::thread putThread([&]() {
// bool result = queue.put(0, element);
// putCompleted = result;
// });
//
// // 主线程等待一段时间,确保 put 线程已经阻塞
// std::this_thread::sleep_for(std::chrono::milliseconds(100));
// EXPECT_FALSE(putCompleted);
//
// // 启动一个线程进行 poll 操作
// std::thread pollThread([&]() {
// int* dequeuedElement = queue.poll();
// if (dequeuedElement) {
// delete dequeuedElement;
// }
// pollDone = true;
// });
//
// // 等待 poll 线程完成
// pollThread.join();
// EXPECT_TRUE(pollDone);
//
// // 等待 put 线程完成
// putThread.join();
// EXPECT_TRUE(putCompleted);
//
//// 清理内存
// int* dequeuedElement = queue.poll();
// if (dequeuedElement) {
// delete dequeuedElement;
// }
//}