code: package com.beijunyi.parallelgit.filesystem.utils;
  
  import java.net.URI;
  
  import org.junit.Test;
  
  import static org.junit.Assert.assertEquals;
  
  public class GfsUriBuilderTest {
  
    @Test
    public void createUri_unixRepoPath() {
      assertEquals(URI.create("gfs:/repo"), GfsUriBuilder.prepare()
                                              .repository("/repo")
                                              .build());
    }
  
    @Test
    public void createUri_dosRepoPath() {
      assertEquals(URI.create("gfs:/c:/repo"), GfsUriBuilder.prepare()
                                                 .repository("/c:/repo")
                                                 .build());
    }
  
    @Test(expected = IllegalArgumentException.class)
    public void createUri_nullRepoPath() {
      GfsUriBuilder.prepare().build();
    }
  
    @Test
    public void createUriWithFile() {
      assertEquals(URI.create("gfs:/repo#/file.txt"), GfsUriBuilder.prepare()
                                                        .repository("/repo")
                                                        .file("/file.txt")
                                                        .build());
    }
  
    @Test
    public void createUriWithFile_relativeFilePath() {
      assertEquals(URI.create("gfs:/repo#/file.txt"), GfsUriBuilder.prepare()
                                                        .repository("/repo")
                                                        .file("file.txt")
                                                        .build());
    }
  
    @Test
    public void createUriWithEmptyFile() {
      assertEquals(URI.create("gfs:/repo"), GfsUriBuilder.prepare()
                                              .repository("/repo")
                                              .file("")
                                              .build());
    }
  
    @Test
    public void createUriWithRootFile() {
      assertEquals(URI.create("gfs:/repo"), GfsUriBuilder.prepare()
                                              .repository("/repo")
                                              .file("/")
                                              .build());
    }
  
    @Test
    public void createUriWithSid() {
      assertEquals(URI.create("gfs:/repo?sid=testsession"), GfsUriBuilder.prepare()
                                                              .repository("/repo")
                                                              .sid("testsession")
                                                              .build());
    }
  
    @Test
    public void createUriWithFileAndSid() {
      assertEquals(URI.create("gfs:/repo?sid=testsession#/file.txt"), GfsUriBuilder.prepare()
                                                                        .repository("/repo")
                                                                        .file("/file.txt")
                                                                        .sid("testsession")
                                                                        .build());
    }
  
  }
  