public void testNormalize() throws Exception {
assertEquals(null, FilenameUtils.normalize(null));
assertEquals(null, FilenameUtils.normalize(":"));
assertEquals(null, FilenameUtils.normalize("1:\\a\\b\\c.txt"));
assertEquals(null, FilenameUtils.normalize("1:"));
assertEquals(null, FilenameUtils.normalize("1:a"));
assertEquals(null, FilenameUtils.normalize("\\\\\\a\\b\\c.txt"));
assertEquals(null, FilenameUtils.normalize("\\\\a"));
assertEquals("a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalize("a\\b/c.txt"));
assertEquals("" + SEP + "a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalize("\\a\\b/c.txt"));
assertEquals("C:" + SEP + "a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalize("C:\\a\\b/c.txt"));
assertEquals("" + SEP + "" + SEP + "server" + SEP + "a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalize("\\\\server\\a\\b/c.txt"));
assertEquals("~" + SEP + "a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalize("~\\a\\b/c.txt"));
assertEquals("~user" + SEP + "a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalize("~user\\a\\b/c.txt"));
assertEquals("a" + SEP + "c", FilenameUtils.normalize("a/b/../c"));
assertEquals("c", FilenameUtils.normalize("a/b/../../c"));
assertEquals("c" + SEP, FilenameUtils.normalize("a/b/../../c/"));
assertEquals(null, FilenameUtils.normalize("a/b/../../../c"));
assertEquals("a" + SEP, FilenameUtils.normalize("a/b/.."));
assertEquals("a" + SEP, FilenameUtils.normalize("a/b/../"));
assertEquals("", FilenameUtils.normalize("a/b/../.."));
assertEquals("", FilenameUtils.normalize("a/b/../../"));
assertEquals(null, FilenameUtils.normalize("a/b/../../.."));
assertEquals("a" + SEP + "d", FilenameUtils.normalize("a/b/../c/../d"));
assertEquals("a" + SEP + "d" + SEP, FilenameUtils.normalize("a/b/../c/../d/"));
assertEquals("a" + SEP + "b" + SEP + "d", FilenameUtils.normalize("a/b//d"));
assertEquals("a" + SEP + "b" + SEP, FilenameUtils.normalize("a/b/././."));
assertEquals("a" + SEP + "b" + SEP, FilenameUtils.normalize("a/b/./././"));
assertEquals("a" + SEP, FilenameUtils.normalize("./a/"));
assertEquals("a", FilenameUtils.normalize("./a"));
assertEquals("", FilenameUtils.normalize("./"));
assertEquals("", FilenameUtils.normalize("."));
assertEquals(null, FilenameUtils.normalize("../a"));
assertEquals(null, FilenameUtils.normalize(".."));
assertEquals("", FilenameUtils.normalize(""));
assertEquals(SEP + "a", FilenameUtils.normalize("/a"));
assertEquals(SEP + "a" + SEP, FilenameUtils.normalize("/a/"));
assertEquals(SEP + "a" + SEP + "c", FilenameUtils.normalize("/a/b/../c"));
assertEquals(SEP + "c", FilenameUtils.normalize("/a/b/../../c"));
assertEquals(null, FilenameUtils.normalize("/a/b/../../../c"));
assertEquals(SEP + "a" + SEP, FilenameUtils.normalize("/a/b/.."));
assertEquals(SEP + "", FilenameUtils.normalize("/a/b/../.."));
assertEquals(null, FilenameUtils.normalize("/a/b/../../.."));
assertEquals(SEP + "a" + SEP + "d", FilenameUtils.normalize("/a/b/../c/../d"));
assertEquals(SEP + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalize("/a/b//d"));
assertEquals(SEP + "a" + SEP + "b" + SEP, FilenameUtils.normalize("/a/b/././."));
assertEquals(SEP + "a", FilenameUtils.normalize("/./a"));
assertEquals(SEP + "", FilenameUtils.normalize("/./"));
assertEquals(SEP + "", FilenameUtils.normalize("/."));
assertEquals(null, FilenameUtils.normalize("/../a"));
assertEquals(null, FilenameUtils.normalize("/.."));
assertEquals(SEP + "", FilenameUtils.normalize("/"));
assertEquals("~" + SEP + "a", FilenameUtils.normalize("~/a"));
assertEquals("~" + SEP + "a" + SEP, FilenameUtils.normalize("~/a/"));
assertEquals("~" + SEP + "a" + SEP + "c", FilenameUtils.normalize("~/a/b/../c"));
assertEquals("~" + SEP + "c", FilenameUtils.normalize("~/a/b/../../c"));
assertEquals(null, FilenameUtils.normalize("~/a/b/../../../c"));
assertEquals("~" + SEP + "a" + SEP, FilenameUtils.normalize("~/a/b/.."));
assertEquals("~" + SEP + "", FilenameUtils.normalize("~/a/b/../.."));
assertEquals(null, FilenameUtils.normalize("~/a/b/../../.."));
assertEquals("~" + SEP + "a" + SEP + "d", FilenameUtils.normalize("~/a/b/../c/../d"));
assertEquals("~" + SEP + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalize("~/a/b//d"));
assertEquals("~" + SEP + "a" + SEP + "b" + SEP, FilenameUtils.normalize("~/a/b/././."));
assertEquals("~" + SEP + "a", FilenameUtils.normalize("~/./a"));
assertEquals("~" + SEP, FilenameUtils.normalize("~/./"));
assertEquals("~" + SEP, FilenameUtils.normalize("~/."));
assertEquals(null, FilenameUtils.normalize("~/../a"));
assertEquals(null, FilenameUtils.normalize("~/.."));
assertEquals("~" + SEP, FilenameUtils.normalize("~/"));
assertEquals("~" + SEP, FilenameUtils.normalize("~"));
assertEquals("~user" + SEP + "a", FilenameUtils.normalize("~user/a"));
assertEquals("~user" + SEP + "a" + SEP, FilenameUtils.normalize("~user/a/"));
assertEquals("~user" + SEP + "a" + SEP + "c", FilenameUtils.normalize("~user/a/b/../c"));
assertEquals("~user" + SEP + "c", FilenameUtils.normalize("~user/a/b/../../c"));
assertEquals(null, FilenameUtils.normalize("~user/a/b/../../../c"));
assertEquals("~user" + SEP + "a" + SEP, FilenameUtils.normalize("~user/a/b/.."));
assertEquals("~user" + SEP + "", FilenameUtils.normalize("~user/a/b/../.."));
assertEquals(null, FilenameUtils.normalize("~user/a/b/../../.."));
assertEquals("~user" + SEP + "a" + SEP + "d", FilenameUtils.normalize("~user/a/b/../c/../d"));
assertEquals("~user" + SEP + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalize("~user/a/b//d"));
assertEquals("~user" + SEP + "a" + SEP + "b" + SEP, FilenameUtils.normalize("~user/a/b/././."));
assertEquals("~user" + SEP + "a", FilenameUtils.normalize("~user/./a"));
assertEquals("~user" + SEP + "", FilenameUtils.normalize("~user/./"));
assertEquals("~user" + SEP + "", FilenameUtils.normalize("~user/."));
assertEquals(null, FilenameUtils.normalize("~user/../a"));
assertEquals(null, FilenameUtils.normalize("~user/.."));
assertEquals("~user" + SEP, FilenameUtils.normalize("~user/"));
assertEquals("~user" + SEP, FilenameUtils.normalize("~user"));
assertEquals("C:" + SEP + "a", FilenameUtils.normalize("C:/a"));
assertEquals("C:" + SEP + "a" + SEP, FilenameUtils.normalize("C:/a/"));
assertEquals("C:" + SEP + "a" + SEP + "c", FilenameUtils.normalize("C:/a/b/../c"));
assertEquals("C:" + SEP + "c", FilenameUtils.normalize("C:/a/b/../../c"));
assertEquals(null, FilenameUtils.normalize("C:/a/b/../../../c"));
assertEquals("C:" + SEP + "a" + SEP, FilenameUtils.normalize("C:/a/b/.."));
assertEquals("C:" + SEP + "", FilenameUtils.normalize("C:/a/b/../.."));
assertEquals(null, FilenameUtils.normalize("C:/a/b/../../.."));
assertEquals("C:" + SEP + "a" + SEP + "d", FilenameUtils.normalize("C:/a/b/../c/../d"));
assertEquals("C:" + SEP + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalize("C:/a/b//d"));
assertEquals("C:" + SEP + "a" + SEP + "b" + SEP, FilenameUtils.normalize("C:/a/b/././."));
assertEquals("C:" + SEP + "a", FilenameUtils.normalize("C:/./a"));
assertEquals("C:" + SEP + "", FilenameUtils.normalize("C:/./"));
assertEquals("C:" + SEP + "", FilenameUtils.normalize("C:/."));
assertEquals(null, FilenameUtils.normalize("C:/../a"));
assertEquals(null, FilenameUtils.normalize("C:/.."));
assertEquals("C:" + SEP + "", FilenameUtils.normalize("C:/"));
assertEquals("C:" + "a", FilenameUtils.normalize("C:a"));
assertEquals("C:" + "a" + SEP, FilenameUtils.normalize("C:a/"));
assertEquals("C:" + "a" + SEP + "c", FilenameUtils.normalize("C:a/b/../c"));
assertEquals("C:" + "c", FilenameUtils.normalize("C:a/b/../../c"));
assertEquals(null, FilenameUtils.normalize("C:a/b/../../../c"));
assertEquals("C:" + "a" + SEP, FilenameUtils.normalize("C:a/b/.."));
assertEquals("C:" + "", FilenameUtils.normalize("C:a/b/../.."));
assertEquals(null, FilenameUtils.normalize("C:a/b/../../.."));
assertEquals("C:" + "a" + SEP + "d", FilenameUtils.normalize("C:a/b/../c/../d"));
assertEquals("C:" + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalize("C:a/b//d"));
assertEquals("C:" + "a" + SEP + "b" + SEP, FilenameUtils.normalize("C:a/b/././."));
assertEquals("C:" + "a", FilenameUtils.normalize("C:./a"));
assertEquals("C:" + "", FilenameUtils.normalize("C:./"));
assertEquals("C:" + "", FilenameUtils.normalize("C:."));
assertEquals(null, FilenameUtils.normalize("C:../a"));
assertEquals(null, FilenameUtils.normalize("C:.."));
assertEquals("C:" + "", FilenameUtils.normalize("C:"));
assertEquals(SEP + SEP + "server" + SEP + "a", FilenameUtils.normalize("//server/a"));
assertEquals(SEP + SEP + "server" + SEP + "a" + SEP, FilenameUtils.normalize("//server/a/"));
assertEquals(SEP + SEP + "server" + SEP + "a" + SEP + "c", FilenameUtils.normalize("//server/a/b/../c"));
assertEquals(SEP + SEP + "server" + SEP + "c", FilenameUtils.normalize("//server/a/b/../../c"));
assertEquals(null, FilenameUtils.normalize("//server/a/b/../../../c"));
assertEquals(SEP + SEP + "server" + SEP + "a" + SEP, FilenameUtils.normalize("//server/a/b/.."));
assertEquals(SEP + SEP + "server" + SEP + "", FilenameUtils.normalize("//server/a/b/../.."));
assertEquals(null, FilenameUtils.normalize("//server/a/b/../../.."));
assertEquals(SEP + SEP + "server" + SEP + "a" + SEP + "d", FilenameUtils.normalize("//server/a/b/../c/../d"));
assertEquals(SEP + SEP + "server" + SEP + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalize("//server/a/b//d"));
assertEquals(SEP + SEP + "server" + SEP + "a" + SEP + "b" + SEP, FilenameUtils.normalize("//server/a/b/././."));
assertEquals(SEP + SEP + "server" + SEP + "a", FilenameUtils.normalize("//server/./a"));
assertEquals(SEP + SEP + "server" + SEP + "", FilenameUtils.normalize("//server/./"));
assertEquals(SEP + SEP + "server" + SEP + "", FilenameUtils.normalize("//server/."));
assertEquals(null, FilenameUtils.normalize("//server/../a"));
assertEquals(null, FilenameUtils.normalize("//server/.."));
assertEquals(SEP + SEP + "server" + SEP + "", FilenameUtils.normalize("//server/"));
}