code: package com.beijunyi.parallelgit.filesystem.commands;
  
  import java.io.IOException;
  
  import com.beijunyi.parallelgit.filesystem.AbstractGitFileSystemTest;
  import com.beijunyi.parallelgit.filesystem.ParallelGitMergeTest;
  import com.beijunyi.parallelgit.filesystem.commands.GfsMerge.Result;
  import org.eclipse.jgit.lib.AnyObjectId;
  import org.junit.Before;
  import org.junit.Test;
  
  import static com.beijunyi.parallelgit.filesystem.Gfs.*;
  import static com.beijunyi.parallelgit.filesystem.commands.GfsMerge.Status.MERGED;
  import static org.junit.Assert.assertEquals;
  
  public class GfsMergeAutoMergeTest extends AbstractGitFileSystemTest implements ParallelGitMergeTest {
  
    @Before
    public void setUp() throws IOException {
      initRepository();
      writeToCache("/test_file.txt", "a\nb\nc\nd\ne");
      AnyObjectId base = commit();
      writeToCache("/test_file.txt", "a\nB\nc\nd\ne");
      commitToBranch(OURS, base);
      writeToCache("/test_file.txt", "a\nb\nc\nD\nd\ne");
      commitToBranch(THEIRS, base);
      gfs = newFileSystem(OURS, repo);
    }
  
    @Test
    public void whenSourceBranchHasAutoMergeableFile_statusShouldBeMerged() throws IOException {
      Result result = merge(gfs).source(THEIRS).execute();
      assertEquals(MERGED, result.getStatus());
    }
  
    @Test
    public void whenSourceBranchHasAutoMergeableFile_theFileShouldHaveMergedContentAfterTheOperation() throws IOException {
      merge(gfs).source(THEIRS).execute();
      assertEquals("a\nB\nc\nD\nd\ne", readAsString(gfs.getPath("/test_file.txt")));
    }
  
  }
  