Falcon.SugarApi/Falcon.SugarApi.Test/ThreadSafeFixedSizeQueueTest.cs
2025-04-23 14:51:57 +08:00

61 lines
1.6 KiB
C#

using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace Falcon.SugarApi.Test
{
/// <summary>
/// 任务防抖测试
/// </summary>
[TestClass()]
public class ThreadSafeFixedSizeQueueTest
{
/// <summary>
/// 出入数据测试
/// </summary>
[TestMethod()]
public void TestInOut() {
var queue = new ThreadSafeFixedSizeQueue<int>(3);
var i = queue.Dequeue();
Assert.IsTrue(i == 0);
queue.Enqueue(1);
Assert.IsTrue(queue.Count == 1);
i = queue.Dequeue();
Assert.IsTrue(i == 1);
queue.Enqueue(1);
queue.Enqueue(2);
queue.Enqueue(3);
queue.Enqueue(4);
queue.Enqueue(5);
Assert.IsTrue(queue.Count == 3);
i = queue.Dequeue();
Assert.IsTrue(i == 3);
i = queue.Dequeue();
Assert.IsTrue(i == 4);
i = queue.Dequeue();
Assert.IsTrue(i == 5);
Assert.IsTrue(queue.Count == 0);
queue.Enqueue(1);
queue.Enqueue(2);
queue.Enqueue(3);
queue.Clear();
Assert.IsTrue(queue.Count == 0);
i = queue.Dequeue();
Assert.IsTrue(i == 0);
queue.Enqueue(1);
queue.Enqueue(2);
queue.Enqueue(3);
int id = 1;
while(queue.TryDequeue(out i)) {
Assert.IsTrue(i == id++);
}
Assert.IsTrue(queue.Count == 0);
}
}
}