package net.sf.beanlib.util;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.io.ByteArrayInputStream;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.Iterator;
import java.util.NoSuchElementException;
import org.junit.Test;
import junit.framework.JUnit4TestAdapter;
/**
* @author Hanson Char
*/
public class LineIteratorTest {
private static final String EMPTY = "";
private static final String ONE_LINER = "One line";
private static final String TWO_LINER = ONE_LINER + "\n" + "Two line";
private static final TextIterable PLACEHOLDER = new TextIterable((URL) null);
@Test
public void testClose() {
{
ByteArrayInputStream is = new ByteArrayInputStream(TWO_LINER.getBytes());
LineIterator itr = new LineIterator(PLACEHOLDER, is, true, (Charset) null);
assertEquals(ONE_LINER, itr.next());
assertTrue(itr.getLineNumber() == 1);
itr.closeInPrivate();
assertNull(itr.next());
assertFalse(itr.hasNext());
}
{
ByteArrayInputStream is = new ByteArrayInputStream(TWO_LINER.getBytes());
LineIterator itr = new LineIterator(PLACEHOLDER, is, true, (Charset) null);
assertEquals(ONE_LINER, itr.next());
itr.closeInPrivate();
assertFalse(itr.hasNext());
assertNull(itr.next());
}
}
@Test(expected = NoSuchElementException.class)
public void testNoSuchElement() {
{
ByteArrayInputStream is = new ByteArrayInputStream(EMPTY.getBytes());
LineIterator itr = new LineIterator(PLACEHOLDER, is, false, (Charset) null);
assertTrue(itr.getLineNumber() == 0);
assertFalse(itr.hasNext());
assertFalse(itr.hasNext());
itr.next();
}
}
@Test(expected = NoSuchElementException.class)
public void testNoSuchElement2() {
{
ByteArrayInputStream is = new ByteArrayInputStream(EMPTY.getBytes());
LineIterator itr = new LineIterator(PLACEHOLDER, is, false, (Charset) null);
itr.next();
}
}
@Test(expected = NoSuchElementException.class)
public void testNoSuchElement3() {
{
ByteArrayInputStream is = new ByteArrayInputStream(EMPTY.getBytes());
LineIterator itr = new LineIterator(PLACEHOLDER, is, false, (Charset) null);
assertFalse(itr.hasNext());
itr.next();
}
}
@Test
public void testEmpty() {
{
ByteArrayInputStream is = new ByteArrayInputStream(EMPTY.getBytes());
LineIterator itr = new LineIterator(PLACEHOLDER, is, true, (Charset) null);
assertTrue(itr.getLineNumber() == 0);
assertFalse(itr.hasNext());
assertNull(itr.next());
assertTrue(itr.getLineNumber() == -1);
assertFalse(itr.hasNext());
assertNull(itr.next());
assertTrue(itr.getLineNumber() == -1);
itr.close();
}
{
ByteArrayInputStream is = new ByteArrayInputStream(EMPTY.getBytes());
LineIterator itr = new LineIterator(PLACEHOLDER, is, true, (Charset) null);
assertTrue(itr.getLineNumber() == 0);
assertFalse(itr.hasNext());
assertFalse(itr.hasNext());
assertNull(itr.next());
assertTrue(itr.getLineNumber() == -1);
assertNull(itr.next());
assertTrue(itr.getLineNumber() == -1);
}
}
@Test
public void testOneLiner() {
{
ByteArrayInputStream is = new ByteArrayInputStream(ONE_LINER.getBytes());
LineIterator itr = new LineIterator(PLACEHOLDER, is, true, (Charset) null);
assertTrue(itr.getLineNumber() == 0);
assertTrue(itr.hasNext());
assertTrue(itr.getLineNumber() == 1);
assertEquals(ONE_LINER, itr.next());
assertTrue(itr.getLineNumber() == 1);
assertFalse(itr.hasNext());
assertTrue(itr.getLineNumber() == -1);
assertNull(itr.next());
assertTrue(itr.getLineNumber() == -1);
}
{
ByteArrayInputStream is = new ByteArrayInputStream(ONE_LINER.getBytes());
LineIterator itr = new LineIterator(PLACEHOLDER, is, true, (Charset) null);
assertTrue(itr.getLineNumber() == 0);
assertTrue(itr.hasNext());
assertTrue(itr.getLineNumber() == 1);
assertTrue(itr.hasNext());
assertTrue(itr.getLineNumber() == 1);
assertEquals(ONE_LINER, itr.next());
assertTrue(itr.getLineNumber() == 1);
assertNull(itr.next());
assertTrue(itr.getLineNumber() == -1);
}
{
ByteArrayInputStream is = new ByteArrayInputStream(ONE_LINER.getBytes());
Iterator itr = new LineIterator(PLACEHOLDER, is, true, (Charset) null);
assertEquals(ONE_LINER, itr.next());
assertFalse(itr.hasNext());
}
}
@Test
public void testTwoLiner() {
{
ByteArrayInputStream is = new ByteArrayInputStream(TWO_LINER.getBytes());
Iterator itr = new LineIterator(PLACEHOLDER, is, true, (Charset) null);
assertTrue(itr.hasNext());
assertEquals(ONE_LINER, itr.next());
assertTrue(itr.hasNext());
assertEquals("Two line", itr.next());
assertFalse(itr.hasNext());
assertNull(itr.next());
}
{
ByteArrayInputStream is = new ByteArrayInputStream(TWO_LINER.getBytes());
LineIterator itr = new LineIterator(PLACEHOLDER, is, true, (Charset) null);
assertTrue(itr.getLineNumber() == 0);
assertTrue(itr.hasNext());
assertTrue(itr.getLineNumber() == 1);
assertTrue(itr.hasNext());
assertTrue(itr.getLineNumber() == 1);
assertEquals(ONE_LINER, itr.next());
assertTrue(itr.getLineNumber() == 1);
assertTrue(itr.hasNext());
assertTrue(itr.getLineNumber() == 2);
assertTrue(itr.hasNext());
assertTrue(itr.getLineNumber() == 2);
assertEquals("Two line", itr.next());
assertTrue(itr.getLineNumber() == 2);
assertFalse(itr.hasNext());
assertTrue(itr.getLineNumber() == -1);
assertFalse(itr.hasNext());
assertTrue(itr.getLineNumber() == -1);
assertNull(itr.next());
assertTrue(itr.getLineNumber() == -1);
assertNull(itr.next());
assertTrue(itr.getLineNumber() == -1);
}
{
ByteArrayInputStream is = new ByteArrayInputStream(TWO_LINER.getBytes());
Iterator itr = new LineIterator(PLACEHOLDER, is, true, (Charset) null);
assertEquals(ONE_LINER, itr.next());
assertEquals("Two line", itr.next());
assertNull(itr.next());
assertFalse(itr.hasNext());
}
}
public static junit.framework.Test suite() {
return new JUnit4TestAdapter(LineIteratorTest.class);
}
}