code: package com.beijunyi.parallelgit.utils;
  
  import java.io.IOException;
  import java.io.InputStream;
  
  import com.beijunyi.parallelgit.AbstractParallelGitTest;
  import com.beijunyi.parallelgit.utils.io.BlobSnapshot;
  import org.eclipse.jgit.lib.ObjectId;
  import org.junit.Before;
  import org.junit.Test;
  
  import static org.junit.Assert.*;
  
  public class BlobUtilsReadBlobTest extends AbstractParallelGitTest {
  
    @Before
    public void setUp() throws IOException {
      initRepository();
    }
  
    @Test
    public void getBlobSize_shouldReturnTheLengthOfTheByteArray() throws IOException {
      byte[] bytes = someBytes();
      ObjectId blob = writeToCache(someFilename(), bytes);
      commit();
  
      assertEquals(bytes.length, BlobUtils.getBlobSize(blob, repo));
    }
  
    @Test
    public void openBlob_theResultShouldStreamTheBlobData() throws Exception {
      byte[] expected = someBytes();
      ObjectId blob = writeToCache(someFilename(), expected);
      commit();
  
      try(InputStream input = BlobUtils.openBlob(blob, repo)) {
        byte[] actual = new byte[expected.length];
        assertEquals(actual.length, input.read(actual));
        assertArrayEquals(expected, actual);
      }
    }
  
    @Test
    public void readBlob_theResultShouldHaveTheBlobData() throws Exception {
      byte[] expected = someBytes();
      ObjectId blob = writeToCache(someFilename(), expected);
      commit();
  
      BlobSnapshot snapshot = BlobUtils.readBlob(blob, repo);
      assertEquals(blob, snapshot.getId());
      assertArrayEquals(expected, snapshot.getData());
    }
  
  }
  