package net.sf.beanlib.util;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.Iterator;
import java.util.NoSuchElementException;
import junit.framework.JUnit4TestAdapter;
import org.junit.Test;
/**
* @author Hanson Char
*/
public class TextIterableTest {
@Test
public void testIteration() {
TextIterable ti = new TextIterable("testing_text_iterable.txt");
int count = 0;
for (String line : ti) {
assertTrue(ti.numberOfopenedIterators() == 1);
count++;
System.out.println(line);
}
assertTrue(count == 10);
assertTrue(ti.numberOfopenedIterators() == 0);
}
@Test
public void testMultipleIterators() {
TextIterable ti = new TextIterable("testing_text_iterable.txt");
int count = 0;
ti.iterator(); // 1st
ti.iterator(); // 2nd
for (String line : ti) {
assertTrue(ti.numberOfopenedIterators() == 3);
count++;
System.out.println(line);
}
assertTrue(count == 10);
assertTrue(ti.numberOfopenedIterators() == 2);
ti.close();
assertTrue(ti.numberOfopenedIterators() == 0);
}
@Test
public void testCloseInMiddle() {
TextIterable ti = new TextIterable("testing_text_iterable.txt");
int count = 0;
for (String line : ti) {
count++;
assertTrue(ti.numberOfopenedIterators() == 1);
System.out.println(line);
if (count == 5) {
break;
}
}
assertTrue(count == 5);
assertTrue(ti.numberOfopenedIterators() == 1);
ti.close();
assertTrue(ti.numberOfopenedIterators() == 0);
ti.close();
}
@Test(expected = NoSuchElementException.class)
public void testNoSuchElement() {
TextIterable ti = new TextIterable("testing_text_iterable.txt");
Iterator itr = ti.iterator();
while (itr.hasNext()) {
itr.next();
}
itr.next();
}
@Test
public void testReturnNull() {
TextIterable ti = new TextIterable("testing_text_iterable.txt").withReturnNullUponEof(true);
Iterator itr = ti.iterator();
while (itr.hasNext()) {
itr.next();
}
assertNull(itr.next());
assertNull(itr.next());
assertFalse(itr.hasNext());
assertFalse(itr.hasNext());
assertNull(itr.next());
}
@Test
public void testReturnNull2() {
TextIterable ti = new TextIterable("testing_text_iterable.txt").withReturnNullUponEof(true);
Iterator itr = ti.iterator();
while (itr.hasNext()) {
itr.next();
}
assertFalse(itr.hasNext());
assertNull(itr.next());
}
public static junit.framework.Test suite() {
return new JUnit4TestAdapter(TextIterableTest.class);
}
}