実装したキュークラスのサンプルテストの設定で問題が発生しました。
キュークラスは次のとおりです。
Queue.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;
};
Queue.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に追加して、キューの機能をテストするコードを記述すると、正常に機能し、カウントが正しく返されます。テストプロジェクトで静的ライブラリとして使用されたときに何かが起こっていますか?