package edu.stanford.nlp.util;
import junit.framework.TestCase;
/**
* Tests some basic operations on the TreeShapedStack
*
* @author Danqi Chen
*/
public class TreeShapedStackTest extends TestCase {
public void testEquals() {
TreeShapedStack<String> t1 = new TreeShapedStack<String>();
t1 = t1.push("foo");
t1 = t1.push("bar");
t1 = t1.push("bar");
t1 = t1.push("diet");
t1 = t1.push("coke");
TreeShapedStack<String> t2 = new TreeShapedStack<String>();
t2 = t2.push("foo");
t2 = t2.push("bar");
t2 = t2.push("bar");
t2 = t2.push("diet");
t2 = t2.push("coke");
TreeShapedStack<String> t3 = t2.pop().push("pepsi");
assertEquals(t1, t2);
assertFalse(t1.pop().equals(t2));
assertFalse(t2.pop().equals(t1));
assertFalse(t2.equals(t3));
}
public void testBasicOperations() {
TreeShapedStack<String> tss = new TreeShapedStack<String>();
assertEquals(tss.size, 0);
TreeShapedStack<String> tss1 = tss.push("1");
assertEquals(tss1.size, 1);
assertEquals(tss1.peek(), "1");
TreeShapedStack<String> tss2 = tss1.push("2");
assertEquals(tss2.size, 2);
assertEquals(tss2.peek(), "2");
assertEquals(tss2.previous.peek(), "1");
TreeShapedStack<String> tss3 = tss2.push("3");
assertEquals(tss3.size, 3);
assertEquals(tss3.peek(), "3");
assertEquals(tss3.previous.peek(), "2");
tss3 = tss3.pop();
assertEquals(tss3.peek(), "2");
assertEquals(tss3.previous.peek(), "1");
assertEquals(tss3.peek(), "2");
TreeShapedStack<String> tss4 = tss3.push("4");
assertEquals(tss4.peek(), "4");
assertEquals(tss4.peek(), "4");
assertEquals(tss4.previous.peek(), "2");
tss4 = tss4.pop();
assertEquals(tss4.peek(), "2");
tss4 = tss4.pop();
assertEquals(tss4.peek(), "1");
tss4 = tss4.pop();
assertEquals(tss4.size, 0);
}
}