code: package com.beijunyi.parallelgit.filesystem;
  
  import java.io.IOException;
  import java.nio.file.FileAlreadyExistsException;
  import java.nio.file.Files;
  import java.nio.file.Path;
  
  import org.junit.Test;
  
  import static org.junit.Assert.*;
  
  public class FilesCreateDirectoryTest extends AbstractGitFileSystemTest {
  
    @Test
    public void createNewDirectory_theSpecifiedDirectoryShouldExistAfterTheOperation() throws IOException {
      initGitFileSystem();
      Path dir = gfs.getPath("/dir");
      Files.createDirectory(dir);
      assertTrue(Files.isDirectory(dir));
    }
  
    @Test
    public void createNewDirectoryAndCreateChildFile_theChildFileShouldExistAfterTheOperation() throws IOException {
      initGitFileSystem();
      Path dir = gfs.getPath("/dir");
      Files.createDirectory(dir);
      Path childFile = dir.resolve("file.txt");
      Files.write(childFile, someBytes());
      assertTrue(Files.exists(childFile));
    }
  
    @Test
    public void createEmptyDirectory_theFileSystemShouldStayClean() throws IOException {
      initGitFileSystem();
      GitPath dir = gfs.getPath("/empty_dir");
      Files.createDirectory(dir);
      assertFalse(gfs.getStatusProvider().isDirty());
    }
  
    @Test(expected = FileAlreadyExistsException.class)
    public void createNewDirectoryWhenDirectoryExists_shouldThrowFileAlreadyExistsException() throws IOException {
      initGitFileSystem("/a/b.txt");
      Files.createDirectory(gfs.getPath("/a"));
    }
  
    @Test(expected = FileAlreadyExistsException.class)
    public void createNewDirectoryWhenFileExists_shouldThrowFileAlreadyExistsException() throws IOException {
      initGitFileSystem("/a");
      Files.createDirectory(gfs.getPath("/a"));
    }
  
    @Test(expected = FileAlreadyExistsException.class)
    public void createRootDirectory_shouldThrowFileAlreadyExistsException() throws IOException {
      initGitFileSystem();
      Files.createDirectory(gfs.getPath("/"));
    }
  
  
  }
  