import org.junit.Test;
import static junit.framework.TestCase.assertFalse;
import static junit.framework.TestCase.assertTrue;
/**
* Created by wuhuachuan on 16/8/25.
*/
public class MyStackTest {
private static final int LENGTH = 3;
private MyStack<Integer> myStack = new MyStack<>(3);
@Test
public void testPush(){
//1. null
try {
myStack.push(null);
assertFalse(true);
} catch (IllegalArgumentException e){
assertTrue(true);
}
//2. int 类型
try {
myStack.push(1);
assertTrue(true);
} catch (IllegalArgumentException e){
assertTrue(true);
}
//3. 合理的push
Integer element = new Integer(2);
myStack.push(element);
assertTrue("push fail.",testDataIsExist(element));
//4. 出界
try {
for(int i = 0; i < LENGTH + 1; ++i){
myStack.push(new Integer(i));
}
assertFalse(true);
} catch (Exception e){
assertTrue(true);
}
}
@Test
public void testPop(){
//1. 数组元素为空的时候 pop
try {
myStack.pop();
assertFalse(true);
} catch (Exception e){
assertTrue(true);
}
//2. 正常 pop // PS:需要先保证 push 操作 ok
Integer element = new Integer(1);
myStack.push(element);
assertTrue("pop is wrong",myStack.pop() == element);
}
private boolean testDataIsExist(Integer element) {
Object elementData[] = myStack.getElementData();
for (int i = 0 ; i < elementData.length; ++i){
if(element == elementData[i]){
return true;
} else {
;
}
}
return false;
}
}