#include /// for assert #include /// for std::cout #include "./queue.hpp" template void testConstructedQueueIsEmpty() { const queue curQueue; assert(curQueue.isEmptyQueue()); } void testEnQueue() { queue curQueue; curQueue.enQueue(10); assert(curQueue.toVector() == std::vector({10})); curQueue.enQueue(20); assert(curQueue.toVector() == std::vector({10, 20})); curQueue.enQueue(30); curQueue.enQueue(40); assert(curQueue.toVector() == std::vector({10, 20, 30, 40})); } void testDeQueue() { queue curQueue; curQueue.enQueue(10); curQueue.enQueue(20); curQueue.enQueue(30); curQueue.deQueue(); assert(curQueue.toVector() == std::vector({20, 30})); curQueue.deQueue(); assert(curQueue.toVector() == std::vector({30})); curQueue.deQueue(); assert(curQueue.isEmptyQueue()); } void testFront() { queue curQueue; curQueue.enQueue(10); assert(curQueue.front() == 10); curQueue.enQueue(20); assert(curQueue.front() == 10); } void testQueueAfterClearIsEmpty() { queue curQueue; curQueue.enQueue(10); curQueue.enQueue(20); curQueue.enQueue(30); curQueue.clear(); assert(curQueue.isEmptyQueue()); } void testFrontThrowsAnInvalidArgumentWhenQueueEmpty() { const queue curQueue; bool wasException = false; try { curQueue.front(); } catch (const std::invalid_argument&) { wasException = true; } assert(wasException); } void testDeQueueThrowsAnInvalidArgumentWhenQueueEmpty() { queue curQueue; bool wasException = false; try { curQueue.deQueue(); } catch (const std::invalid_argument&) { wasException = true; } assert(wasException); } int main() { testConstructedQueueIsEmpty(); testConstructedQueueIsEmpty(); testConstructedQueueIsEmpty>(); testEnQueue(); testDeQueue(); testQueueAfterClearIsEmpty(); testFrontThrowsAnInvalidArgumentWhenQueueEmpty(); testDeQueueThrowsAnInvalidArgumentWhenQueueEmpty(); std::cout << "All tests pass!\n"; return 0; }