PathUtils { public static void validatePath(String path, boolean isSequential) throws IllegalArgumentException { validatePath(isSequential? path + "1": path); }  static void validatePath(String path, boolean isSequential); static void validatePath(String path); static String normalizeFileSystemPath(String path);  }
@Test public void testValidatePath_ValidPath() { PathUtils.validatePath("/this is / a valid/path"); }
@Test(expected=IllegalArgumentException.class) public void testValidatePath_Null() { PathUtils.validatePath(null); }
@Test(expected=IllegalArgumentException.class) public void testValidatePath_EmptyString() { PathUtils.validatePath(""); }
@Test(expected=IllegalArgumentException.class) public void testValidatePath_NotAbsolutePath() { PathUtils.validatePath("not/valid"); }
@Test(expected=IllegalArgumentException.class) public void testValidatePath_EndsWithSlash() { PathUtils.validatePath("/ends/with/slash/"); }
@Test(expected=IllegalArgumentException.class) public void testValidatePath_ContainsNullCharacter() { PathUtils.validatePath("/test\u0000"); }
@Test(expected=IllegalArgumentException.class) public void testValidatePath_DoubleSlash() { PathUtils.validatePath("/double }
@Test(expected=IllegalArgumentException.class) public void testValidatePath_SinglePeriod() { PathUtils.validatePath("/single/./period"); }
@Test(expected=IllegalArgumentException.class) public void testValidatePath_DoublePeriod() { PathUtils.validatePath("/double/../period"); }
@Test public void testValidatePath_NameContainingPeriod() { PathUtils.validatePath("/name/with.period."); }
@Test(expected=IllegalArgumentException.class) public void testValidatePath_0x01() { PathUtils.validatePath("/test\u0001"); }
@Test(expected=IllegalArgumentException.class) public void testValidatePath_0x1F() { PathUtils.validatePath("/test\u001F"); }
@Test public void testValidatePath_0x20() { PathUtils.validatePath("/test\u0020"); }
@Test public void testValidatePath_0x7e() { PathUtils.validatePath("/test\u007e"); }
@Test(expected=IllegalArgumentException.class) public void testValidatePath_0x7f() { PathUtils.validatePath("/test\u007f"); }
@Test(expected=IllegalArgumentException.class) public void testValidatePath_0x9f() { PathUtils.validatePath("/test\u009f"); }
@Test(expected=IllegalArgumentException.class) public void testValidatePath_ud800() { PathUtils.validatePath("/test\ud800"); }
@Test(expected=IllegalArgumentException.class) public void testValidatePath_uf8ff() { PathUtils.validatePath("/test\uf8ff"); }
@Test public void testValidatePath_HighestAllowableChar() { PathUtils.validatePath("/test\uffef"); }
@Test(expected=IllegalArgumentException.class) public void testValidatePath_SupplementaryChar() { PathUtils.validatePath("/test\ufff0"); }