test_queue.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #include <cassert> /// for assert
  2. #include <iostream> /// for std::cout
  3. #include "./queue.hpp"
  4. template <typename T>
  5. void testConstructedQueueIsEmpty() {
  6. const queue<T> curQueue;
  7. assert(curQueue.isEmptyQueue());
  8. }
  9. void testEnQueue() {
  10. queue<int> curQueue;
  11. curQueue.enQueue(10);
  12. assert(curQueue.toVector() == std::vector<int>({10}));
  13. curQueue.enQueue(20);
  14. assert(curQueue.toVector() == std::vector<int>({10, 20}));
  15. curQueue.enQueue(30);
  16. curQueue.enQueue(40);
  17. assert(curQueue.toVector() == std::vector<int>({10, 20, 30, 40}));
  18. }
  19. void testDeQueue() {
  20. queue<int> curQueue;
  21. curQueue.enQueue(10);
  22. curQueue.enQueue(20);
  23. curQueue.enQueue(30);
  24. curQueue.deQueue();
  25. assert(curQueue.toVector() == std::vector<int>({20, 30}));
  26. curQueue.deQueue();
  27. assert(curQueue.toVector() == std::vector<int>({30}));
  28. curQueue.deQueue();
  29. assert(curQueue.isEmptyQueue());
  30. }
  31. void testFront() {
  32. queue<int> curQueue;
  33. curQueue.enQueue(10);
  34. assert(curQueue.front() == 10);
  35. curQueue.enQueue(20);
  36. assert(curQueue.front() == 10);
  37. }
  38. void testQueueAfterClearIsEmpty() {
  39. queue<int> curQueue;
  40. curQueue.enQueue(10);
  41. curQueue.enQueue(20);
  42. curQueue.enQueue(30);
  43. curQueue.clear();
  44. assert(curQueue.isEmptyQueue());
  45. }
  46. void testFrontThrowsAnInvalidArgumentWhenQueueEmpty() {
  47. const queue<int> curQueue;
  48. bool wasException = false;
  49. try {
  50. curQueue.front();
  51. } catch (const std::invalid_argument&) {
  52. wasException = true;
  53. }
  54. assert(wasException);
  55. }
  56. void testDeQueueThrowsAnInvalidArgumentWhenQueueEmpty() {
  57. queue<int> curQueue;
  58. bool wasException = false;
  59. try {
  60. curQueue.deQueue();
  61. } catch (const std::invalid_argument&) {
  62. wasException = true;
  63. }
  64. assert(wasException);
  65. }
  66. int main() {
  67. testConstructedQueueIsEmpty<int>();
  68. testConstructedQueueIsEmpty<double>();
  69. testConstructedQueueIsEmpty<std::vector<long double>>();
  70. testEnQueue();
  71. testDeQueue();
  72. testQueueAfterClearIsEmpty();
  73. testFrontThrowsAnInvalidArgumentWhenQueueEmpty();
  74. testDeQueueThrowsAnInvalidArgumentWhenQueueEmpty();
  75. std::cout << "All tests pass!\n";
  76. return 0;
  77. }