diff options
| author | mo khan <mo.khan@gmail.com> | 2020-06-22 16:48:53 -0600 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-06-22 16:48:53 -0600 |
| commit | 571b09a1f8fae003b043e85ea3f02c100e7aec8a (patch) | |
| tree | 7b5e8a8316f133b1bfc183fe0ad512a5572c7cb1 /assignments/01 | |
| parent | a29ab35229c7379cf9911288f066a5247e7825d7 (diff) | |
Swap tail with non adjacent node
Diffstat (limited to 'assignments/01')
| -rw-r--r-- | assignments/01/swap_doubly_linked_list_test.c | 32 |
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); |
