code: package usecases;
  
  import java.io.IOException;
  import java.nio.file.AccessDeniedException;
  import java.nio.file.Files;
  import java.nio.file.NoSuchFileException;
  
  import com.beijunyi.parallelgit.filesystem.AbstractGitFileSystemTest;
  import com.beijunyi.parallelgit.filesystem.GitPath;
  import org.junit.Test;
  
  import static org.junit.Assert.assertArrayEquals;
  
  public class FilesReadAllBytesTest extends AbstractGitFileSystemTest {
  
    @Test
    public void readAllBytes_shouldReturnTheContentOfTheFileAsBytes() throws IOException {
      initRepository();
      byte[] data = someBytes();
      writeToCache("/file.txt", data);
      commitToMaster();
      initGitFileSystem();
      GitPath path = gfs.getPath("/file.txt");
      assertArrayEquals(data, Files.readAllBytes(path));
    }
  
    @Test(expected = NoSuchFileException.class)
    public void readAllBytesFromNonExistentFile_shouldThrowNoSuchFileException() throws IOException {
      initGitFileSystem();
      Files.readAllBytes(gfs.getPath("/non_existent_file.txt"));
    }
  
    @Test(expected = AccessDeniedException.class)
    public void readAllBytesFromDirectory_shouldThrowAccessDeniedException() throws IOException {
      initRepository();
      writeToCache("/dir/file.txt", "some text");
      commitToMaster();
      initGitFileSystem();
      GitPath path = gfs.getPath("/dir");
      Files.readAllBytes(path);
    }
  
    @Test(expected = AccessDeniedException.class)
    public void readAllBytesFromRoot_shouldThrowAccessDeniedException() throws IOException {
      initGitFileSystem();
      Files.readAllBytes(root);
    }
  
  }
  