我在为我实现的队列类设置示例测试时遇到了一些问题。
这是队列类:
队列.h:
typedef float QueueInfoType;
QueueInfoType x;
class Queue
{
public:
Queue(){front = rear = count = 0;}
bool isEmpty();
bool isFull();
void add(QueueInfoType x);
float remove();
int numItems();
enum {MAXQUEUE = 80};
private:
QueueInfoType values[MAXQUEUE];
int front, rear, count;
};
队列.cpp:
bool Queue::isEmpty()
{
return front == rear;
}
bool Queue::isFull()
{
return count >= MAXQUEUE;
}
void Queue::add(QueueInfoType x)
{
values[rear = (rear + 1) % MAXQUEUE] = x;
count = count + 1;
}
float Queue::remove()
{
count = count - 1;
return x = values[front = (front + 1) % MAXQUEUE];
}
int Queue::numItems()
{
return count;
}
测试方法:
[TestMethod]
void TestNumItems()
{
Queue q;
for(int i = 0; i < 20; i++)
{
q.add(i);
}
int expected = 2;
int actual = q.numItems();
Assert::AreEqual(expected, actual, "queue had: " + actual + " items");
};
我显然遗漏了一些东西,当我调用 add 方法将项目添加到队列时,我的队列计数永远不会增加,但是项目会很好地添加到队列中。
我正在一个静态库中编译我的队列类,并在我的测试项目中添加对它的引用。
任何想法为什么我的队列的计数永远不会改变?
编辑:
我正在使用此类创建一个循环队列,该队列具有由 MAXQUEUE 定义的最大项目数。
以上是 QueueInfoType 是如何定义的。
笔记:
当我将静态库更改为可执行文件并添加void main()
到我的 queue.cpp 并编写代码来测试队列的功能时,它工作得很好并且 count 返回正确。当它被测试项目用作静态库时会发生什么事情吗?