Commit 8794d6e

mo khan <mo.khan@gmail.com>
2020-06-16 03:06:59
Start to flush out interface of priority queue
1 parent cf6fd19
assignments/01/priority_queue.c
@@ -1,15 +1,16 @@
 #include "priority_queue.h"
-/*#include <stdio.h>*/
-/*#include <stdlib.h>*/
-/*#include <stdint.h>*/
-/*#include <ctype.h>*/
-/*#include <string.h>*/
+#include <stdlib.h>
 
-struct PriorityQueue initialize() {
-  struct PriorityQueue queue;
+PriorityQueue *initialize() {
+  PriorityQueue *queue = malloc(sizeof(PriorityQueue));
+  queue->size = 0;
   return queue;
 }
 
-int count(struct PriorityQueue queue) {
-  return 0;
+int count(PriorityQueue *queue) {
+  return queue->size;
+}
+
+void add(PriorityQueue *queue, Node *node) {
+  queue->size++;
 }
assignments/01/priority_queue.h
@@ -1,5 +1,12 @@
-struct PriorityQueue {
-};
+typedef struct {
 
-struct PriorityQueue initialize();
-int count(struct PriorityQueue queue);
+} Node;
+
+typedef struct {
+  int size;
+} PriorityQueue;
+
+
+PriorityQueue *initialize();
+int count(PriorityQueue *queue);
+void add(PriorityQueue *queue, Node *node);
assignments/01/priority_queue_test.c
@@ -18,13 +18,27 @@ BeforeEach(PriorityQueue){ }
 AfterEach(PriorityQueue){ }
 
 Ensure(PriorityQueue, returns_size) {
-  struct PriorityQueue queue = initialize();
+  PriorityQueue *queue = initialize();
 
   assert_that(count(queue), is_equal_to(0));
 }
 
+Ensure(PriorityQueue, adds_a_node) {
+  PriorityQueue *queue = initialize();
+  Node *node;
+
+  node = malloc(sizeof(Node));
+
+  add(queue, node);
+
+  assert_that(count(queue), is_equal_to(1));
+  free(node);
+  free(queue);
+}
+
 TestSuite *priority_queue_tests() {
   TestSuite *suite = create_test_suite();
   add_test_with_context(suite, PriorityQueue, returns_size);
+  add_test_with_context(suite, PriorityQueue, adds_a_node);
   return suite;
 }