code: package com.beijunyi.parallelgit.io;
  
  import java.io.IOException;
  
  import com.beijunyi.parallelgit.AbstractParallelGitTest;
  import com.beijunyi.parallelgit.utils.io.TreeSnapshot;
  import org.eclipse.jgit.lib.ObjectId;
  import org.junit.Before;
  import org.junit.Test;
  
  import static com.beijunyi.parallelgit.utils.io.GitFileEntry.*;
  import static org.eclipse.jgit.lib.FileMode.REGULAR_FILE;
  import static org.junit.Assert.*;
  
  public class TreeSnapshotGetChildTest extends AbstractParallelGitTest {
  
    @Before
    public void setUp() throws IOException {
      initRepository();
    }
  
    @Test
    public void getChild_shouldReturnTheChildEntry() throws IOException {
      ObjectId id = writeToCache("/test_file.txt", someBytes(), REGULAR_FILE);
      ObjectId tree = commit().getTree();
      TreeSnapshot snapshot = TreeSnapshot.load(tree, repo);
      assertEquals(newEntry(id, REGULAR_FILE), snapshot.getChild("test_file.txt"));
    }
  
    @Test
    public void getChildWhenSpecifiedChildDoesNotExist_shouldReturnMissingEntry() throws IOException {
      writeSomethingToCache();
      ObjectId tree = commit().getTree();
      TreeSnapshot snapshot = TreeSnapshot.load(tree, repo);
      assertEquals(missingEntry(), snapshot.getChild("non_existent_file.txt"));
    }
  
    @Test
    public void testHasChildWhenChildExists_shouldReturnTrue() throws IOException {
      writeToCache("/test_file.txt");
      ObjectId tree = commit().getTree();
      TreeSnapshot snapshot = TreeSnapshot.load(tree, repo);
      assertTrue(snapshot.hasChild("test_file.txt"));
    }
  
    @Test
    public void testHasChildWhenChildDoesNotExist_shouldReturnFalse() throws IOException {
      writeSomethingToCache();
      ObjectId tree = commit().getTree();
      TreeSnapshot snapshot = TreeSnapshot.load(tree, repo);
      assertFalse(snapshot.hasChild("non_existent_file.txt"));
    }
  
  }
  