I need a test harness for the following code: LinkedListImpl.java package linkedList; public abstract class LinkedListImpl implements LinkedList { private ListItem firstItem; public LinkedListImpl() { this.firstItem = null; } @Override public Boolean isItemInList(String thisItem) { ListItem currentItem = firstItem; while (currentItem != null) { if (currentItem.data.equals(thisItem)) { return true; } currentItem = currentItem.next; } return false; } @Override public Boolean addItem(String thisItem) { if (isItemInList(thisItem)) { return false; } else { ListItem newItem = new ListItem(thisItem); if (firstItem == null) { firstItem = newItem; } else { ListItem currentItem = firstItem; while (currentItem.next != null) { currentItem = currentItem.next; } currentItem.next = newItem; } return true; } } @Override public Integer itemCount() { Integer count = 0; ListItem currentItem = firstItem; while (currentItem != null) { count++; currentItem = currentItem.next; } return count; } @Override public void listItems() { if (firstItem == null) { System.out.println("The list is empty."); } else { ListItem currentItem = firstItem; while (currentItem != null) { System.out.println(currentItem.data); currentItem = currentItem.next; } } } @Override public Boolean deleteItem(String thisItem) { if (firstItem == null) { return false; } else if (firstItem.data.equals(thisItem)) { firstItem = firstItem.next; return true; } else { ListItem currentItem = firstItem; while (currentItem.next != null) { if (currentItem.next.data.equals(thisItem)) { currentItem.next = currentItem.next.next; return true; } currentItem = currentItem.next; } return false; } } @Override public Boolean insertBefore(String newItem, String itemToInsertBefore) { if (firstItem == null) { return false; } else if (firstItem.data.equals(itemToInsertBefore)) { ListItem newItemNode = new ListItem(newItem); newItemNode.next = firstItem; firstItem = newItemNode; return true; } else { ListItem currentItem = firstItem; while (currentItem.next != null) { if (currentItem.next.data.equals(itemToInsertBefore)) { ListItem newItemNode = new ListItem(newItem); newItemNode.next = currentItem.next; currentItem.next = newItemNode; return true; } currentItem = currentItem.next; } return false; } } } LinkedList.java package linkedList; public interface LinkedList { Boolean isItemInList(String thisItem); Boolean addItem(String thisItem); Integer itemCount(); void listItems(); Boolean deleteItem(String thisItem); Boolean insertBefore(String newItem, String itemToInsertBefore); Boolean insertAfter(String newItem, String itemToInsertAfter); void sort(); } ListItem.java package linkedList; public class ListItem { public String data; public ListItem next; public ListItem(String data) { this.data = data; this.next = null; } } LinkedListTest.java package linkedList; public class LinkedListTester { public static void main(String[] args) { } }
I need a test harness for the following code:
LinkedListImpl.java
package linkedList;
public abstract class LinkedListImpl implements LinkedList {
private ListItem firstItem;
public LinkedListImpl() {
this.firstItem = null;
}
@Override
public Boolean isItemInList(String thisItem) {
ListItem currentItem = firstItem;
while (currentItem != null) {
if (currentItem.data.equals(thisItem)) {
return true;
}
currentItem = currentItem.next;
}
return false;
}
@Override
public Boolean addItem(String thisItem) {
if (isItemInList(thisItem)) {
return false;
} else {
ListItem newItem = new ListItem(thisItem);
if (firstItem == null) {
firstItem = newItem;
} else {
ListItem currentItem = firstItem;
while (currentItem.next != null) {
currentItem = currentItem.next;
}
currentItem.next = newItem;
}
return true;
}
}
@Override
public Integer itemCount() {
Integer count = 0;
ListItem currentItem = firstItem;
while (currentItem != null) {
count++;
currentItem = currentItem.next;
}
return count;
}
@Override
public void listItems() {
if (firstItem == null) {
System.out.println("The list is empty.");
} else {
ListItem currentItem = firstItem;
while (currentItem != null) {
System.out.println(currentItem.data);
currentItem = currentItem.next;
}
}
}
@Override
public Boolean deleteItem(String thisItem) {
if (firstItem == null) {
return false;
} else if (firstItem.data.equals(thisItem)) {
firstItem = firstItem.next;
return true;
} else {
ListItem currentItem = firstItem;
while (currentItem.next != null) {
if (currentItem.next.data.equals(thisItem)) {
currentItem.next = currentItem.next.next;
return true;
}
currentItem = currentItem.next;
}
return false;
}
}
@Override
public Boolean insertBefore(String newItem, String itemToInsertBefore) {
if (firstItem == null) {
return false;
} else if (firstItem.data.equals(itemToInsertBefore)) {
ListItem newItemNode = new ListItem(newItem);
newItemNode.next = firstItem;
firstItem = newItemNode;
return true;
} else {
ListItem currentItem = firstItem;
while (currentItem.next != null) {
if (currentItem.next.data.equals(itemToInsertBefore)) {
ListItem newItemNode = new ListItem(newItem);
newItemNode.next = currentItem.next;
currentItem.next = newItemNode;
return true;
}
currentItem = currentItem.next;
}
return false;
}
}
}
LinkedList.java
package linkedList;
public interface LinkedList {
Boolean isItemInList(String thisItem);
Boolean addItem(String thisItem);
Integer itemCount();
void listItems();
Boolean deleteItem(String thisItem);
Boolean insertBefore(String newItem, String itemToInsertBefore);
Boolean insertAfter(String newItem, String itemToInsertAfter);
void sort();
}
ListItem.java
package linkedList;
public class ListItem {
public String data;
public ListItem next;
public ListItem(String data) {
this.data = data;
this.next = null;
}
}
LinkedListTest.java
package linkedList;
public class LinkedListTester {
public static void main(String[] args) {
}
}
![](/static/compass_v2/shared-icons/check-mark.png)
Trending now
This is a popular solution!
Step by step
Solved in 3 steps
![Blurred answer](/static/compass_v2/solution-images/blurred-answer.jpg)
![Database System Concepts](https://www.bartleby.com/isbn_cover_images/9780078022159/9780078022159_smallCoverImage.jpg)
![Starting Out with Python (4th Edition)](https://www.bartleby.com/isbn_cover_images/9780134444321/9780134444321_smallCoverImage.gif)
![Digital Fundamentals (11th Edition)](https://www.bartleby.com/isbn_cover_images/9780132737968/9780132737968_smallCoverImage.gif)
![Database System Concepts](https://www.bartleby.com/isbn_cover_images/9780078022159/9780078022159_smallCoverImage.jpg)
![Starting Out with Python (4th Edition)](https://www.bartleby.com/isbn_cover_images/9780134444321/9780134444321_smallCoverImage.gif)
![Digital Fundamentals (11th Edition)](https://www.bartleby.com/isbn_cover_images/9780132737968/9780132737968_smallCoverImage.gif)
![C How to Program (8th Edition)](https://www.bartleby.com/isbn_cover_images/9780133976892/9780133976892_smallCoverImage.gif)
![Database Systems: Design, Implementation, & Manag…](https://www.bartleby.com/isbn_cover_images/9781337627900/9781337627900_smallCoverImage.gif)
![Programmable Logic Controllers](https://www.bartleby.com/isbn_cover_images/9780073373843/9780073373843_smallCoverImage.gif)