package de.vksi.c4j.acceptancetest.stack;
import java.util.ArrayList;
import de.vksi.c4j.ContractReference;
@ContractReference(StackContract.class)
public class Stack<T> implements StackSpec<T> {
private int capacity;
private ArrayList<T> values;
public Stack(int capacity) {
this.capacity = capacity;
values = new ArrayList<T>();
}
public int capacity() {
int result = 0;
result = capacity;
return result;
}
public int count() {
int result = 0;
result = values.size();
return result;
}
public void push(T x) {
values.add(x);
}
public void pop() {
values.remove(count() - 1);
}
public T top() {
T result = null;
result = values.get(values.size() - 1);
return result;
}
public boolean isFull() {
boolean result = false;
result = count() == capacity;
return result;
}
public boolean isEmpty() {
boolean result = false;
result = values.isEmpty();
return result;
}
public T get(int index) {
T result = null;
result = values.get(index);
return result;
}
}