package org.nutz.lang.util;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
public class LinkedCharArrayTest {
private LinkedCharArray lia;
@Before
public void setUp() throws Exception {
lia = new LinkedCharArray(2);
lia.push("ABCDEFG");
}
@Test
public void test_re_push() {
lia = new LinkedCharArray();
lia.push('A').popLast();
lia.push('F');
assertEquals('F', lia.last());
assertEquals(1, lia.size());
}
@Test
public void testNormal() {
assertEquals(7, lia.size());
assertEquals('A', lia.first());
assertEquals('G', lia.last());
}
@Test
public void testPopfirst() {
assertEquals('A', lia.popFirst());
assertEquals('B', lia.popFirst());
assertEquals('C', lia.popFirst());
assertEquals('D', lia.popFirst());
assertEquals('E', lia.popFirst());
assertEquals('F', lia.popFirst());
assertEquals('G', lia.popFirst());
assertEquals(0, lia.size());
}
@Test
public void testPoplast() {
assertEquals('G', lia.popLast());
assertEquals('F', lia.popLast());
assertEquals('E', lia.popLast());
assertEquals('D', lia.popLast());
assertEquals('C', lia.popLast());
assertEquals('B', lia.popLast());
assertEquals('A', lia.popLast());
assertEquals(0, lia.size());
}
@Test
public void testPop() {
lia.popFirst();
assertEquals('B', lia.first());
lia.popFirst();
assertEquals('C', lia.first());
lia.popLast();
assertEquals('F', lia.last());
lia.popLast();
assertEquals('E', lia.last());
}
@Test
public void testToString() {
assertEquals("ABCDEFG", lia.toString());
}
@Test
public void testGetSet() {
assertEquals('C', lia.get(2));
lia.set(2, '$');
assertEquals('$', lia.get(2));
}
@Test
public void testGetSetOutOfBound() {
try {
lia.get(-1);
fail();
}
catch (Exception e) {}
try {
lia.get(lia.size());
fail();
}
catch (Exception e) {}
try {
lia.set(-1, '#');
fail();
}
catch (Exception e) {}
try {
lia.set(lia.size(), '#');
fail();
}
catch (Exception e) {}
}
@Test
public void testClear() {
assertFalse(lia.isEmpty());
lia.clear();
assertTrue(lia.isEmpty());
assertEquals(0, lia.size());
}
@Test
public void testEndWith() {
assertTrue(lia.endsWith("FG"));
assertFalse(lia.endsWith((String) null));
assertFalse(lia.endsWith("M"));
assertTrue(lia.endsWith(new char[]{'F', 'G'}));
assertFalse(lia.endsWith((char[]) null));
assertFalse(lia.endsWith(new char[]{'M'}));
}
}