public AlluxioURI joinUnsafe(String suffix) {
    String path = getPath();
    StringBuilder sb = new StringBuilder(path.length() + 1 + suffix.length());

    return new AlluxioURI(this,
        sb.append(path).append(AlluxioURI.SEPARATOR).append(suffix).toString(), false);
  }
@Test
  public void joinUnsafe() {
    assertEquals(new AlluxioURI("/a"), new AlluxioURI("/").joinUnsafe("a"));
    assertEquals(new AlluxioURI("/a/b"), new AlluxioURI("/a").joinUnsafe("b"));
    assertEquals(new AlluxioURI("a/b"), new AlluxioURI("a").joinUnsafe("b"));
    assertEquals(new AlluxioURI("a/b.txt"), new AlluxioURI("a").joinUnsafe("/b.txt"));
    assertEquals(new AlluxioURI("alluxio:/a/b.txt"),
        new AlluxioURI("alluxio:/a").joinUnsafe("/b.txt"));
    assertEquals(new AlluxioURI("C:\\\\a\\b"), new AlluxioURI("C:\\\\a").joinUnsafe("\\b"));
    assertEquals(new AlluxioURI("/a/b"), new AlluxioURI("/a").joinUnsafe("///b///"));

    final String pathWithSpecialChar = "����,��b����$o����[| =B����";
    assertEquals(new AlluxioURI("/" + pathWithSpecialChar),
        new AlluxioURI("/").joinUnsafe(pathWithSpecialChar));

    final String pathWithSpecialCharAndColon = "����,��b����$o����[| =B��:��";
    assertEquals(new AlluxioURI("/" + pathWithSpecialCharAndColon),
        new AlluxioURI("/").joinUnsafe(pathWithSpecialCharAndColon));

    // The following joins are not "safe", because the new path component requires normalization.
    assertNotEquals(new AlluxioURI("/a/c"), new AlluxioURI("/a").joinUnsafe("b/../c"));
    assertNotEquals(new AlluxioURI("a/b.txt"), new AlluxioURI("a").joinUnsafe("/c/../b.txt"));
    assertNotEquals(new AlluxioURI("alluxio:/a/b.txt"),
        new AlluxioURI("alluxio:/a/c.txt").joinUnsafe("/../b.txt"));

    // join empty string
    assertEquals(new AlluxioURI("/a"), new AlluxioURI("/a").joinUnsafe(""));
  }