-3

I have this linked list class i made and idk really how to test it, do you think it works or could you explain how i could test it?

public class List {

private int size;
private Node head;
private Node current;
private Node prev;
private Node temp;

/**
 * Creates an empty list.
 * @pre none
 * @post and empty list is created
 */ 

public List(){
    head = null;    
}

/**
 * Delete the current element from this list. The element after the deleted element becomes the new current. 
 * If that's not possible, then the element before the deleted element becomes the new current. 
 * If that is also not possible, then you need to recognize what state the list is in and define current accordingly.
 * Nothing should be done if a delete is not possible.
 * @pre there is a current element
 * @post the item current pointed to is removed, the element before or after is the new current
 */

public void delete(){
    if(current.getNext() != null){
        current = current.getNext();
        prev.setNext(current);
        size--;
    }
    else 
        if(current.getNext() == null){
        current = prev;
        current.setNext(null);
        resetPrev();
        size--;
    }
}

/**
 * Get the value of the current element. If this is not possible, throw an IllegalArgumentException.
 * @pre the list is not empty
 * @post the current element's data is returned
 * @return value of the current element.
 */

public char get(){
    return current.getItem();
}

/**
 * Go to the last element of the list. If this is not possible, don't change the cursor.
 * @pre there is a current element
 * @post current is now the last element in the list
 */

public void goLast(){
    while (current.getNext() != null){
        current = current.getNext();
    }
}

/**
 * Advance the cursor to the next element. If this is not possible, don't change the cursor.
 * @pre there is a current element
 * @post current is now the element after what it was
 */

public void goNext(){
    if(current.getNext() != null){
        current = current.getNext();
        }
    //else do nothing
}

/**
 * Retreat the cursor to the previous element. If this is not possible, don't change the cursor.
 * @pre
 * @post
 */

public void goPrev(){
    current = prev;
    resetPrev();
}

/**
 * Go to top of the list. This is the position before the first element.
 * @pre
 * @post
 */

public void goTop(){

}


/**
 * Go to first element of the list. If this is not possible, don't change the cursor.
 * @pre none
 * @post current is now pointing to the first node of the list, the head
 */

public void goFirst(){
    current = head;
}

/**
 * Insert the given parameter after the current element. The newly inserted element becomes the current element.
 * @pre none
 * @post newVal is inserted into the list and is now the current element
 * @param newVal is the value to insert after the current element.
 */ 

public void insert(char newVal){
    if(head == null){
        head = new Node(newVal);
        size++;
    }
    else{
        Node current = head;
        while(current.getNext() != null){
            current = current.getNext();
        }
        Node prev = current;
        current = new Node(newVal);
        prev.setNext(current);
        size++;
    }
}

/**
 * Determines if this list is empty. Empty means this list has no elements.
 * @pre none
 * @post a boolean value of the state of the list is returned
 * @return true if the list is empty.
 */

public boolean isEmpty(){
    return head == null;
}

/**
 * Determines the size of the list. The size of the list is the number of elements in the list.
 * @pre none
 * @post size is accessed and returned
 * @return size which is the number of elements in the list.
 */

public int size(){
    return size;
}

public void resetPrev(){
    //reset prev to prev's previous
    Node temp = head;
    while(temp != current){
        temp = temp.getNext();
    }
    prev = temp;
}

public class Node {

    private char item;
    private Node next;

    public Node(char val) {
        this.item = val;
    }

    public char getItem() {
        return this.item;
    }

    public Node getNext() {
        return this.next;
    }

    public void setNext(Node next) {
        this.next = next;
    }
}

}

Thanks for any help im still pretty new so i'm not sure how to do these, im not even sure if it works all the way that is why i want to test it!

erp
  • 2,950
  • 9
  • 45
  • 90

1 Answers1

2

To test:

I would suggest writing some JUnit test cases for each method. Here's where you'll need to go to get started http://www.junit.org

If you are using the Eclipse IDE, Lars Vogel is one of my favorite resources. Work through his tutorial and if you have any specific further questions, update your original post.

whiteshooz
  • 61
  • 1
  • 7
  • we are suposed to be using j unit but for the love of me this thing confuses me -___- will read that tho thanks! – erp Nov 10 '12 at 02:23