summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo khan <mo.khan@gmail.com>2020-06-28 13:23:58 -0600
committermo khan <mo.khan@gmail.com>2020-06-28 13:23:58 -0600
commit729303c07ffe14bdd74799622e369e7a19c05ae6 (patch)
treecc8dd7972adfa72b84f305d065d8a3408cf3cee1
parentb4329298825bb6e9783bb463e786a4253422efd3 (diff)
start to build a MinStack
-rw-r--r--assignments/01/min_stack_test.c63
1 files changed, 61 insertions, 2 deletions
diff --git a/assignments/01/min_stack_test.c b/assignments/01/min_stack_test.c
index be0c989..ef02bd6 100644
--- a/assignments/01/min_stack_test.c
+++ b/assignments/01/min_stack_test.c
@@ -15,12 +15,71 @@ Describe(MinStack);
BeforeEach(MinStack){ }
AfterEach(MinStack){ }
-Ensure(MinStack, when_getting_head) {
+struct node {
+ int data;
+ struct node *next;
+};
+
+typedef struct node Node;
+
+typedef struct {
+ Node *head;
+} Stack;
+
+static Stack *initialize() {
+ Stack *stack = malloc(sizeof(Stack));
+ stack->head = NULL;
+ return stack;
+}
+
+static int size(Stack *stack) {
+ Node *current = stack->head;
+ int i;
+ for (i = 0; current != NULL; i++)
+ current = current->next;
+ return i;
+}
+
+static void push(Stack *stack, int data) {
+ Node *node = malloc(sizeof(Node));
+ node->next = NULL;
+ node->data = data;
+
+ stack->head = node;
+}
+
+static int min(Stack *stack) {
+ if (stack && stack->head)
+ return stack->head->data;
+
+ return (int)NULL;
+}
+
+Ensure(MinStack, when_empty) {
+ Stack *stack = initialize();
+
+ assert_that(size(stack), is_equal_to(0));
+ assert_that(min(stack), is_equal_to(NULL));
+
+ free(stack);
+}
+
+Ensure(MinStack, when_pushing_a_single_integer) {
+ Stack *stack = initialize();
+
+ push(stack, 1);
+
+ assert_that(size(stack), is_equal_to(1));
+ assert_that(min(stack), is_equal_to(1));
+ /*assert_that(pop(stack), is_equal(1));*/
+
+ free(stack);
}
TestSuite *min_stack_tests() {
TestSuite *suite = create_test_suite();
- /*add_test_with_context(suite, MinStack, when_pushing_it);*/
+ add_test_with_context(suite, MinStack, when_empty);
+ add_test_with_context(suite, MinStack, when_pushing_a_single_integer);
return suite;
}