package com.beijunyi.parallelgit.filesystem;
import java.io.IOException;
import java.nio.file.Path;
import java.util.Iterator;
import java.util.NoSuchElementException;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
public class GitPathIteratorTest extends AbstractGitFileSystemTest {
@Before
public void setupFileSystem() throws IOException {
initGitFileSystem();
}
@Test
public void absolutePathIteratorTest() {
GitPath path = gfs.getPath("/a/b/c");
Iterator<Path> it = path.iterator();
assertTrue(it.hasNext());
assertEquals("a", it.next().toString());
assertTrue(it.hasNext());
assertEquals("b", it.next().toString());
assertTrue(it.hasNext());
assertEquals("c", it.next().toString());
assertFalse(it.hasNext());
}
@Test
public void rootPathIteratorTest() {
GitPath path = gfs.getPath("/");
Iterator<Path> it = path.iterator();
assertFalse(it.hasNext());
}
@Test
public void relativePathIteratorTest() {
GitPath path = gfs.getPath("a/b/c");
Iterator<Path> it = path.iterator();
assertTrue(it.hasNext());
assertEquals("a", it.next().toString());
assertTrue(it.hasNext());
assertEquals("b", it.next().toString());
assertTrue(it.hasNext());
assertEquals("c", it.next().toString());
assertFalse(it.hasNext());
}
@Test
public void emptyPathIteratorTest() {
GitPath path = gfs.getPath("");
Iterator<Path> it = path.iterator();
assertFalse(it.hasNext());
}
@Test(expected = NoSuchElementException.class)
public void gitPathIteratorNoSuchElementTest() {
GitPath path = gfs.getPath("a");
Iterator<Path> it = path.iterator();
it.next();
it.next();
}
@Test(expected = UnsupportedOperationException.class)
public void gitPathIteratorRemoveTest() {
GitPath path = gfs.getPath("a");
Iterator<Path> it = path.iterator();
it.next();
it.remove();
}
}