c# - 需要为 Enqueue 和 Dequeue 方法生成语法,以便在 Visual Studio 中运行单元测试
问题描述
到目前为止,我遇到的问题是我的Enqueue
方法或我Dequeue
在 C# 中的方法运行不正确,并且它没有通过为分配创建的 UnitTest。
单元测试应该能够获取Enqueue
方法,并且Dequeue
方法和一次将一个 5 个字符的数组放入堆栈。
[]{10,20,30,40,50}
. 然后以相同的顺序(FIFO)取出它们。
我写的代码无法通过单元测试,报错说:
Assert.AreEqual 失败。预期<20>.实际<10>
public int Count { get; private set; }
private Node<T> _head = null;
private Node<T> _tail = null;
public void Enqueue(T data)
{
Node<T> node = new Node<T>();
node.Data = data;
if (Count == 0)
{
_tail = node;
_head = node;
_tail.Next = node;
}
else
{
node.Next = _tail;
_tail = node.Next;
}
}
我认为这段代码是我的问题,但我可能是错的。我一遍又一遍地尝试了这些变体,但没有成功,并且已经辞职,因为我的逻辑可能不正确或缺少一些非常愚蠢的东西。
public T Dequeue()
{
Node<T> position = _head;
if (Count == 0)
{
throw new InvalidOperationException("You've taken it all...");
}
else
{
T temp = _head.Data;
_head = position.Next;
--Count;
if (_head == null)
{
_tail = null;
}
return temp;
}
}
public void Reverse()
{
Node<T> previous, current, next;
previous = null;
current = _head;
next = _head.Next;
while (current != null)
{
next = current.Next;
current.Next = previous;
previous = current;
current = next;
}
_head = previous;
_tail = next;
}
public void EnqueueDequeueTest()
{
int[] testValues = new int[5] { 10, 20, 30, 40, 50 };
PG2Queue<int> testQueue = new PG2Queue<int>();
foreach (var testValue in testValues)
{
testQueue.Enqueue(testValue);
}
for (int i = 0; i < testValues.Length; i++)
{
int itemPopped = testQueue.Dequeue();
Assert.AreEqual(testValues[i], itemPopped);
}
}
解决方案
推荐阅读
- soap - Web 服务能否同时支持 SOAP 1.1 和 1.2
- android - Cordova Angular webView 错误拒绝应用内联样式,因为它违反了以下内容安全策略指令
- google-cloud-platform - 跨区域 GKE 主节点访问
- javascript - 如何在 JS 中将变量放入 Json Array 函数中
- image-processing - 使用 imagemagick 将 GIF 图像转换为 PNG,但得到的是 RGBA 图像而不是调色板版本
- ios - Swift:将html字符串转换为属性字符串时添加空格
- python - 请帮助我使用 python 将 ['1,7'] 转换为 [1,7]
- javascript - 显示不正确?
- javascript - 在网站和移动应用程序之间整合数据
- javascript - 我想用不同数组的另一个元素更改数组的元素