code: package com.beijunyi.parallelgit.filesystem;
  
  import java.io.IOException;
  
  import org.junit.Before;
  import org.junit.Test;
  
  import static org.junit.Assert.*;
  
  public class GitPathGetFileNameTest extends AbstractGitFileSystemTest {
  
    @Before
    public void setupFileSystem() throws IOException {
      initGitFileSystem();
    }
  
    @Test
    public void absolutePathGetFileName() {
      GitPath path = gfs.getPath("/a/b");
      GitPath result = path.getFileName();
      assertNotNull(result);
      assertEquals("b", result.toString());
    }
  
    @Test
    public void absolutePathWithSingleNameGetFileName() {
      GitPath path = gfs.getPath("/a");
      GitPath result = path.getFileName();
      assertNotNull(result);
      assertEquals("a", result.toString());
    }
  
    @Test
    public void rootPathGetFileName() {
      GitPath path = gfs.getPath("/");
      GitPath result = path.getFileName();
      assertNull(result);
    }
  
    @Test
    public void relativePathGetFileName() {
      GitPath path = gfs.getPath("a/b");
      GitPath result = path.getFileName();
      assertNotNull(result);
      assertEquals("b", result.toString());
    }
  
    @Test
    public void relativePathWithSingleNameGetFileName() {
      GitPath path = gfs.getPath("a");
      GitPath result = path.getFileName();
      assertNotNull(result);
      assertEquals("a", result.toString());
    }
  
    @Test
    public void emptyPathGetFileName() {
      GitPath path = gfs.getPath("");
      GitPath result = path.getFileName();
      assertNull(result);
    }
  
    @Test
    public void dotPathGetFileName() {
      GitPath path = gfs.getPath(".");
      GitPath result = path.getFileName();
      assertNotNull(result);
      assertEquals(".", result.toString());
    }
  
    @Test
    public void doubleDotsPathGetFileName() {
      GitPath path = gfs.getPath("..");
      GitPath result = path.getFileName();
      assertNotNull(result);
      assertEquals("..", result.toString());
    }
  
  }
  