119 lines
3.6 KiB
Java
119 lines
3.6 KiB
Java
package com.baeldung.math;
|
|
|
|
import com.baeldung.math.middleelementlookup.MiddleElementLookup;
|
|
import com.baeldung.math.middleelementlookup.Node;
|
|
import org.junit.Test;
|
|
|
|
import java.util.LinkedList;
|
|
|
|
import static org.junit.Assert.assertEquals;
|
|
import static org.junit.Assert.assertFalse;
|
|
|
|
public class MiddleElementLookupUnitTest {
|
|
|
|
@Test
|
|
public void whenFindingMiddleLinkedList_thenMiddleFound() {
|
|
assertEquals("3", MiddleElementLookup
|
|
.findMiddleElementLinkedList(createLinkedList(5))
|
|
.get());
|
|
assertEquals("2", MiddleElementLookup
|
|
.findMiddleElementLinkedList(createLinkedList(4))
|
|
.get());
|
|
}
|
|
|
|
@Test
|
|
public void whenFindingMiddleFromHead_thenMiddleFound() {
|
|
assertEquals("3", MiddleElementLookup
|
|
.findMiddleElementFromHead(createNodesList(5))
|
|
.get());
|
|
assertEquals("2", MiddleElementLookup
|
|
.findMiddleElementFromHead(createNodesList(4))
|
|
.get());
|
|
}
|
|
|
|
@Test
|
|
public void whenFindingMiddleFromHead1PassRecursively_thenMiddleFound() {
|
|
assertEquals("3", MiddleElementLookup
|
|
.findMiddleElementFromHead1PassRecursively(createNodesList(5))
|
|
.get());
|
|
assertEquals("2", MiddleElementLookup
|
|
.findMiddleElementFromHead1PassRecursively(createNodesList(4))
|
|
.get());
|
|
}
|
|
|
|
@Test
|
|
public void whenFindingMiddleFromHead1PassIteratively_thenMiddleFound() {
|
|
assertEquals("3", MiddleElementLookup
|
|
.findMiddleElementFromHead1PassIteratively(createNodesList(5))
|
|
.get());
|
|
assertEquals("2", MiddleElementLookup
|
|
.findMiddleElementFromHead1PassIteratively(createNodesList(4))
|
|
.get());
|
|
}
|
|
|
|
@Test
|
|
public void whenListEmptyOrNull_thenMiddleNotFound() {
|
|
// null list
|
|
assertFalse(MiddleElementLookup
|
|
.findMiddleElementLinkedList(null)
|
|
.isPresent());
|
|
assertFalse(MiddleElementLookup
|
|
.findMiddleElementFromHead(null)
|
|
.isPresent());
|
|
assertFalse(MiddleElementLookup
|
|
.findMiddleElementFromHead1PassIteratively(null)
|
|
.isPresent());
|
|
assertFalse(MiddleElementLookup
|
|
.findMiddleElementFromHead1PassRecursively(null)
|
|
.isPresent());
|
|
|
|
// empty LinkedList
|
|
assertFalse(MiddleElementLookup
|
|
.findMiddleElementLinkedList(new LinkedList<>())
|
|
.isPresent());
|
|
|
|
// LinkedList with nulls
|
|
LinkedList<String> nullsList = new LinkedList<>();
|
|
nullsList.add(null);
|
|
nullsList.add(null);
|
|
assertFalse(MiddleElementLookup
|
|
.findMiddleElementLinkedList(nullsList)
|
|
.isPresent());
|
|
|
|
// nodes with null values
|
|
assertFalse(MiddleElementLookup
|
|
.findMiddleElementFromHead(new Node(null))
|
|
.isPresent());
|
|
assertFalse(MiddleElementLookup
|
|
.findMiddleElementFromHead1PassIteratively(new Node(null))
|
|
.isPresent());
|
|
assertFalse(MiddleElementLookup
|
|
.findMiddleElementFromHead1PassRecursively(new Node(null))
|
|
.isPresent());
|
|
}
|
|
|
|
private static LinkedList<String> createLinkedList(int n) {
|
|
LinkedList<String> list = new LinkedList<>();
|
|
|
|
for (int i = 1; i <= n; i++) {
|
|
list.add(String.valueOf(i));
|
|
}
|
|
|
|
return list;
|
|
}
|
|
|
|
private static Node createNodesList(int n) {
|
|
Node head = new Node("1");
|
|
Node current = head;
|
|
|
|
for (int i = 2; i <= n; i++) {
|
|
Node newNode = new Node(String.valueOf(i));
|
|
current.setNext(newNode);
|
|
current = newNode;
|
|
}
|
|
|
|
return head;
|
|
}
|
|
|
|
}
|