code: package com.beijunyi.parallelgit.utils;
  
  import java.io.IOException;
  
  import com.beijunyi.parallelgit.AbstractParallelGitTest;
  import org.eclipse.jgit.lib.AnyObjectId;
  import org.eclipse.jgit.lib.ReflogEntry;
  import org.junit.Before;
  import org.junit.Test;
  
  import static org.junit.Assert.*;
  
  public class BranchUtilsGetLogTest extends AbstractParallelGitTest {
  
    @Before
    public void setUp() throws Exception {
      initFileRepository(false);
    }
  
    private void createCommits(String branch, int count) throws IOException {
      for(int i = 0; i < count; i++) {
        writeSomethingToCache();
        commitToBranch(branch, null);
      }
    }
  
    @Test
    public void getLogs_theResultShouldContainAllRefLogs() throws IOException {
      createCommits("test_branch", 3);
      assertEquals(3, BranchUtils.getLogs("test_branch", repo).size());
    }
  
    @Test
    public void getLogsWithMaxLimit_theResultShouldContainNoMoreThanTheSpecifiedLimit() throws IOException {
      createCommits("test_branch", 3);
      assertEquals(2, BranchUtils.getLogs("test_branch", 2, repo).size());
    }
  
    @Test
    public void getLastLog_theResultShouldReferenceToTheLastCommitCreated() throws IOException {
      writeSomethingToCache();
      AnyObjectId firstCommit = commitToBranch("test_branch", "first commit", null);
      AnyObjectId secondLastCommit = commitToBranch("test_branch", "second commit", firstCommit);
      AnyObjectId lastCommit = commitToBranch("test_branch", "third commit", secondLastCommit);
      ReflogEntry lastRefLog = BranchUtils.getLastLog("test_branch", repo);
      assert lastRefLog != null;
      assertEquals(lastCommit, lastRefLog.getNewId());
    }
  
    @Test
    public void getLastLogWhenThereIsNoRefLog_theResultShouldBeNull() throws IOException {
      assertNull(BranchUtils.getLastLog("test_branch", repo));
    }
  
  }
  