Тест с использованием общего стека JUnit4 - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь протестировать класс с именем SharedStack , который работает с Node , который каждый раз, когда я вызываю методы push или pop, возвращает неизменный стек. Память распределяется между стеками (если я выполняю push, я возвращаю новый стек, на самом деле в новом стеке «только» есть topofStack, а другая часть используется совместно с оригиналом).

Как я могу проверить этот класс на ?

Это SharedStack :

public class SharedStack<E> implements Stack<E> {

  private final Node<E> topOfStack;

  private static class Node<E> {

    private final E elem;
    private final Node<E> next;

    public Node(E elem, Node<E> next) {
        this.elem = elem;
        this.next = next;
    }

    public E getElem() {
        return elem;
    }

    public Node<E> getNext() {
        return next;
    }
  }

  public SharedStack() {
    topOfStack = null;
  }

  public SharedStack(Node<E> topOfStack) {
    this.topOfStack = topOfStack;
  }

  @Override
  public Stack<E> push(E elem) {
    return new SharedStack<>(new Node<>(elem, topOfStack));
  }

  @Override
  public Stack<E> pop() throws StackError {
    if (isEmpty()) {
        throw new StackError("No elements in the stack");
    } else {
        return new SharedStack<>(new Node<>(null, topOfStack.getNext()));
    }
  }

  @Override
  public E top() throws StackError {
    if (isEmpty()) {
        throw new StackError("No elements in the stack");
    } else {
        return this.topOfStack.elem;
    }
  }

  @Override
  public boolean isEmpty() {
    if(this.topOfStack == null){
        return true;
    }else{
        return false;
    }
  }
}

Я провел несколько тестов с , например:

@Test
public void SharedStackPop() throws StackError {
    Stack<Integer> s2 = new SharedStack<>();
    s2 = s2.push(7);
    s2 = s2.pop();
    assertEquals(null,s2.top());
}

Я пытался сделать так же, как и в случае с целочисленными значениями, но у меня возникла ошибка, что я не могу добавить какой-либо элемент в стек.

...