From 9772b0c6fc304f800cc987eb904c23611f3966e2 Mon Sep 17 00:00:00 2001
From: Matthew Owens <matthew@owens.tech>
Date: Sun, 26 Dec 2021 17:10:50 +0000
Subject: [PATCH] updated test

---
 check_priority_queue.c | 76 +++++++++++++++++++++++++++++++++++++++---
 1 file changed, 71 insertions(+), 5 deletions(-)

diff --git a/check_priority_queue.c b/check_priority_queue.c
index c10275a..466758c 100644
--- a/check_priority_queue.c
+++ b/check_priority_queue.c
@@ -15,7 +15,7 @@ static void teardown()
 	PrioQueueClear(&intQ);
 }
 
-static void push()
+static void simple_push()
 {
 	int val = 1;
 
@@ -41,13 +41,79 @@ static void push()
 
 START_TEST(test_priority_queue_push)
 {
-	push();
+	simple_push();
+	PrioQueueClear(&intQ);
+
+	int val = 3;
+	PrioQueuePush(&intQ, &val, 1);
+	ck_assert_int_eq(*(int *)intQ.head->data, 3);
+	ck_assert_int_eq(*(int *)intQ.tail->data, 3);
+	ck_assert_int_eq(intQ.head->priority, 1);
+	ck_assert_int_eq(intQ.tail->priority, 1);
+
+	val=4;
+	PrioQueuePush(&intQ, &val, 5);
+	ck_assert_int_eq(*(int *)intQ.head->data, 4);
+	ck_assert_int_eq(*(int *)intQ.tail->data, 3);
+	ck_assert_int_eq(intQ.head->priority, 5);
+	ck_assert_int_eq(intQ.tail->priority, 1);
+
+	val = 10;
+	PrioQueuePush(&intQ, &val, 6);
+	ck_assert_int_eq(*(int *)intQ.head->data, 10);
+	ck_assert_int_eq(*(int *)intQ.tail->data, 3);
+	ck_assert_int_eq(intQ.head->priority, 6);
+	ck_assert_int_eq(intQ.tail->priority, 1);
+
+	val = 11;
+	PrioQueuePush(&intQ, &val, 4);
+	ck_assert_int_eq(*(int *)intQ.head->data, 10);
+	ck_assert_int_eq(*(int *)intQ.tail->data, 3);
+	ck_assert_int_eq(intQ.head->priority, 6);
+	ck_assert_int_eq(intQ.tail->priority, 1);
+
+	val = 21;
+	PrioQueuePush(&intQ, &val, 0);
+	ck_assert_int_eq(*(int *)intQ.head->data, 10);
+	ck_assert_int_eq(*(int *)intQ.tail->data, 21);
+	ck_assert_int_eq(intQ.head->priority, 6);
+	ck_assert_int_eq(intQ.tail->priority, 0);
+
+	// verifying the expected order is
+	// 10, 4, 11, 3, 21
+	PrioQueuePrint(&intQ);
+
+
+	PrioQueuePeek(&intQ, &val);
+	ck_assert_int_eq(val, 10);
+	PrioQueuePop(&intQ, &val);
+	ck_assert_int_eq(val, 10);
+
+	PrioQueuePeek(&intQ, &val);
+	ck_assert_int_eq(val, 4);
+	PrioQueuePop(&intQ, &val);
+	ck_assert_int_eq(val, 4);
+
+	PrioQueuePeek(&intQ, &val);
+	ck_assert_int_eq(val, 11);
+	PrioQueuePop(&intQ, &val);
+	ck_assert_int_eq(val, 11);
+
+	PrioQueuePeek(&intQ, &val);
+	ck_assert_int_eq(val, 3);
+	PrioQueuePop(&intQ, &val);
+	ck_assert_int_eq(val, 3);
+
+	PrioQueuePeek(&intQ, &val);
+	ck_assert_int_eq(val, 21);
+	PrioQueuePop(&intQ, &val);
+	ck_assert_int_eq(val, 21);
 }
 END_TEST
 
 START_TEST(test_priority_queue_pop)
 {
-	push();
+	simple_push();
 	int data = 0;
 
 	PrioQueuePop(&intQ, &data);
@@ -78,7 +144,7 @@ END_TEST
 
 START_TEST(test_priority_queue_clear)
 {
-	push();
+	simple_push();
 	PrioQueueClear(&intQ);
 	ck_assert_ptr_null(intQ.head);
 	ck_assert_ptr_null(intQ.tail);
@@ -89,7 +155,7 @@ END_TEST
 START_TEST(test_priority_queue_peek)
 {
 	int i = 0;
-	push();
+	simple_push();
 	PrioQueuePeek(&intQ, &i);
 	ck_assert_int_eq(i, 1);
 }
-- 
2.20.1