### Question:
Paths { public static boolean isParentOrChild(String p1, String p2) { return isParent(p1, p2) || isParent(p2, p1); }  static String getNameOf(String path); static String getParentOf(String path); static String appended(String path, String child); static String renamed(String path, String newName); static String reparented(String path, String newParentPath); static String relativeIfUnder(String path, String root); static Iterable<String> split(String path); static boolean isParent(String parent, String path); static boolean isParentOrChild(String p1, String p2); static boolean equals(String p1, String p2); static void setCaseSensitive(boolean b); static boolean isCaseSensitive(); static void useSystemCaseSensitivity(); static final char DELIM; }### Answer:
@Test public void testIsParentOrChildOf() throws Exception { assertTrue(Paths.isParentOrChild("foo/bar", "foo/bar")); assertTrue(Paths.isParentOrChild("foo/bar", "foo/bar/baz")); assertTrue(Paths.isParentOrChild("foo/bar/baz", "foo/bar")); assertTrue(Paths.isParentOrChild("/", "/foo/bar")); assertTrue(Paths.isParentOrChild("/foo/bar", "/")); assertFalse(Paths.isParentOrChild("foo/baz", "foo/bar")); }