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.eclipse.jgit.revwalk.RevCommit;
  import org.junit.Before;
  import org.junit.Test;
  
  import static org.junit.Assert.assertTrue;
  
  public class BranchUtilsCreateBranchRefLogTest extends AbstractParallelGitTest {
  
    @Before
    public void setUp() throws IOException {
      initFileRepository(false);
    }
  
    @Test
    public void createBranchFromCommitName_theRefLogShouldStartWithBranchCreatedFromCommit() throws IOException {
      writeSomethingToCache();
      AnyObjectId commit = commitToMaster();
      BranchUtils.createBranch("test_branch", commit.getName(), repo);
      ReflogEntry lastRefLog = BranchUtils.getLastLog("test_branch", repo);
      assert lastRefLog != null;
      assertTrue(lastRefLog.getComment().startsWith("branch: Created from commit"));
    }
  
    @Test
    public void createBranchFromCommitId_theRefLogShouldStartWithBranchCreatedFromCommit() throws IOException {
      writeSomethingToCache();
      AnyObjectId commit = commitToMaster();
      BranchUtils.createBranch("test_branch", commit, repo);
      ReflogEntry lastRefLog = BranchUtils.getLastLog("test_branch", repo);
      assert lastRefLog != null;
      assertTrue(lastRefLog.getComment().startsWith("branch: Created from commit"));
    }
  
    @Test
    public void createBranchFromCommit_theRefLogShouldStartWithBranchCreatedFromCommit() throws IOException {
      writeSomethingToCache();
      RevCommit commit = commitToMaster();
      BranchUtils.createBranch("test_branch", commit, repo);
      ReflogEntry lastRefLog = BranchUtils.getLastLog("test_branch", repo);
      assert lastRefLog != null;
      assertTrue(lastRefLog.getComment().startsWith("branch: Created from commit"));
    }
  
    @Test
    public void createBranchFromBranchRef_theRefLogShouldStartWithBranchCreatedFromBranch() throws IOException {
      writeSomethingToCache();
      commitToBranch("source_branch");
      BranchUtils.createBranch("test_branch", repo.findRef("source_branch"), repo);
      ReflogEntry lastRefLog = BranchUtils.getLastLog("test_branch", repo);
      assert lastRefLog != null;
      assertTrue(lastRefLog.getComment().startsWith("branch: Created from branch"));
    }
  
    @Test
    public void createBranchFromBranchName_theRefLogShouldStartWithBranchCreatedFromBranch() throws IOException {
      writeSomethingToCache();
      commitToBranch("source_branch");
      BranchUtils.createBranch("test_branch", "source_branch", repo);
      ReflogEntry lastRefLog = BranchUtils.getLastLog("test_branch", repo);
      assert lastRefLog != null;
      assertTrue(lastRefLog.getComment().startsWith("branch: Created from branch"));
    }
  
    @Test
    public void createBranchFromTagRef_theHeadOfTheNewBranchShouldEqualToTheTaggedTag() throws IOException {
      writeSomethingToCache();
      TagUtils.tagCommit("source_tag", commitToMaster(), repo);
      BranchUtils.createBranch("test_branch", repo.findRef("source_tag"), repo);
      ReflogEntry lastRefLog = BranchUtils.getLastLog("test_branch", repo);
      assert lastRefLog != null;
      assertTrue(lastRefLog.getComment().startsWith("branch: Created from tag"));
    }
  
    @Test
    public void createBranchFromTagName_theHeadOfTheNewBranchShouldEqualToTheTaggedTag() throws IOException {
      writeSomethingToCache();
      TagUtils.tagCommit("source_tag", commitToMaster(), repo);
      BranchUtils.createBranch("test_branch", "source_tag", repo);
      ReflogEntry lastRefLog = BranchUtils.getLastLog("test_branch", repo);
      assert lastRefLog != null;
      assertTrue(lastRefLog.getComment().startsWith("branch: Created from tag"));
    }
  
    @Test
    public void createBranchFromTag_theHeadOfTheNewBranchShouldEqualToTheTaggedTag() throws IOException {
      writeSomethingToCache();
      TagUtils.tagCommit("source_tag", commitToMaster(), repo);
      BranchUtils.createBranch("test_branch", repo.resolve("source_tag"), repo);
      ReflogEntry lastRefLog = BranchUtils.getLastLog("test_branch", repo);
      assert lastRefLog != null;
      assertTrue(lastRefLog.getComment().startsWith("branch: Created from tag"));
    }
  
  }
  