summaryrefslogtreecommitdiff
path: root/assignments/01
diff options
context:
space:
mode:
authormo khan <mo.khan@gmail.com>2020-06-22 16:48:53 -0600
committermo khan <mo.khan@gmail.com>2020-06-22 16:48:53 -0600
commit571b09a1f8fae003b043e85ea3f02c100e7aec8a (patch)
tree7b5e8a8316f133b1bfc183fe0ad512a5572c7cb1 /assignments/01
parenta29ab35229c7379cf9911288f066a5247e7825d7 (diff)
Swap tail with non adjacent node
Diffstat (limited to 'assignments/01')
-rw-r--r--assignments/01/swap_doubly_linked_list_test.c32
1 files changed, 30 insertions, 2 deletions
diff --git a/assignments/01/swap_doubly_linked_list_test.c b/assignments/01/swap_doubly_linked_list_test.c
index baf30dd..37da7bf 100644
--- a/assignments/01/swap_doubly_linked_list_test.c
+++ b/assignments/01/swap_doubly_linked_list_test.c
@@ -102,7 +102,8 @@ static void swap(Node *x, Node *y) {
x->prev = y->prev;
x->prev->next = x;
x->next = yn;
- x->next->prev = x;
+ if (yn)
+ x->next->prev = x;
y->prev = xp;
if (xp)
y->prev->next = y;
@@ -393,6 +394,33 @@ Ensure(DoublyLinkedList, when_swapping_tail_adjacent_inverted) {
free(head);
}
+Ensure(DoublyLinkedList, when_swapping_tail_with_non_adjacent_node) {
+ Node *head = initialize(100);
+ Node *mid1 = add(head, 200);
+ Node *mid2 = add(head, 300);
+ Node *tail = add(head, 400);
+
+ swap(mid1, tail);
+
+ assert_that(head->prev, is_equal_to(NULL));
+ assert_that(head->data, is_equal_to(100));
+ assert_that(head->next, is_equal_to(tail));
+
+ assert_that(mid1->prev, is_equal_to(mid2));
+ assert_that(mid1->data, is_equal_to(200));
+ assert_that(mid1->next, is_equal_to(NULL));
+
+ assert_that(mid2->prev, is_equal_to(tail));
+ assert_that(mid2->data, is_equal_to(300));
+ assert_that(mid2->next, is_equal_to(mid1));
+
+ assert_that(tail->prev, is_equal_to(head));
+ assert_that(tail->data, is_equal_to(400));
+ assert_that(tail->next, is_equal_to(mid2));
+
+ free(head);
+}
+
Ensure(DoublyLinkedList, when_swapping_with_NULL) {
Node *head = initialize(100);
Node *mid = add(head, 200);
@@ -447,7 +475,7 @@ TestSuite *swap_doubly_linked_list_tests() {
add_test_with_context(suite, DoublyLinkedList, when_swapping_mid_adjacent_y);
add_test_with_context(suite, DoublyLinkedList, when_swapping_tail_adjacent);
add_test_with_context(suite, DoublyLinkedList, when_swapping_tail_adjacent_inverted);
- /*add_test_with_context(suite, DoublyLinkedList, when_swapping_tail_with_non_adjacent_node);*/
+ add_test_with_context(suite, DoublyLinkedList, when_swapping_tail_with_non_adjacent_node);
add_test_with_context(suite, DoublyLinkedList, when_swapping_with_NULL);
add_test_with_context(suite, DoublyLinkedList, when_swapping_self);