📄 pathtest.java
字号:
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */package org.apache.tools.ant.types;import java.io.File;import java.util.Locale;import junit.framework.TestCase;import org.apache.tools.ant.BuildException;import org.apache.tools.ant.Project;import org.apache.tools.ant.taskdefs.condition.Os;/** * JUnit 3 testcases for org.apache.tools.ant.types.Path * */public class PathTest extends TestCase { public static boolean isUnixStyle = File.pathSeparatorChar == ':'; public static boolean isNetWare = Os.isFamily("netware"); private Project project; public PathTest(String name) { super(name); } public void setUp() { project = new Project(); project.setBasedir(System.getProperty("root")); } // actually tests constructor as well as setPath public void testConstructorUnixStyle() { Path p = new Path(project, "/a:/b"); String[] l = p.list(); assertEquals("two items, Unix style", 2, l.length); if (isUnixStyle) { assertEquals("/a", l[0]); assertEquals("/b", l[1]); } else if (isNetWare) { assertEquals("\\a", l[0]); assertEquals("\\b", l[1]); } else { String base = new File(File.separator).getAbsolutePath(); assertEquals(base + "a", l[0]); assertEquals(base + "b", l[1]); } } public void testRelativePathUnixStyle() { project.setBasedir(new File(System.getProperty("root"), "src/etc").getAbsolutePath()); Path p = new Path(project, "..:testcases"); String[] l = p.list(); assertEquals("two items, Unix style", 2, l.length); if (isUnixStyle) { assertTrue("test resolved relative to src/etc", l[0].endsWith("/src")); assertTrue("test resolved relative to src/etc", l[1].endsWith("/src/etc/testcases")); } else if (isNetWare) { assertTrue("test resolved relative to src/etc", l[0].endsWith("\\src")); assertTrue("test resolved relative to src/etc", l[1].endsWith("\\src\\etc\\testcases")); } else { assertTrue("test resolved relative to src/etc", l[0].endsWith("\\src")); assertTrue("test resolved relative to src/etc", l[1].endsWith("\\src\\etc\\testcases")); } } public void testConstructorWindowsStyle() { Path p = new Path(project, "\\a;\\b"); String[] l = p.list(); assertEquals("two items, DOS style", 2, l.length); if (isUnixStyle) { assertEquals("/a", l[0]); assertEquals("/b", l[1]); } else if (isNetWare) { assertEquals("\\a", l[0]); assertEquals("\\b", l[1]); } else { String base = new File(File.separator).getAbsolutePath(); assertEquals(base + "a", l[0]); assertEquals(base + "b", l[1]); } p = new Path(project, "c:\\test"); l = p.list(); if (isUnixStyle) { assertEquals("no drives on Unix", 2, l.length); assertTrue("c resolved relative to project\'s basedir", l[0].endsWith("/c")); assertEquals("/test", l[1]); } else if (isNetWare) { assertEquals("volumes on NetWare", 1, l.length); assertEquals("c:\\test", l[0].toLowerCase(Locale.US)); } else { assertEquals("drives on DOS", 1, l.length); assertEquals("c:\\test", l[0].toLowerCase(Locale.US)); } p = new Path(project, "c:\\test;d:\\programs"); l = p.list(); if (isUnixStyle) { assertEquals("no drives on Unix", 4, l.length); assertTrue("c resolved relative to project\'s basedir", l[0].endsWith("/c")); assertEquals("/test", l[1]); assertTrue("d resolved relative to project\'s basedir", l[2].endsWith("/d")); assertEquals("/programs", l[3]); } else if (isNetWare) { assertEquals("volumes on NetWare", 2, l.length); assertEquals("c:\\test", l[0].toLowerCase(Locale.US)); assertEquals("d:\\programs", l[1].toLowerCase(Locale.US)); } else { assertEquals("drives on DOS", 2, l.length); assertEquals("c:\\test", l[0].toLowerCase(Locale.US)); assertEquals("d:\\programs", l[1].toLowerCase(Locale.US)); } p = new Path(project, "c:/test"); l = p.list(); if (isUnixStyle) { assertEquals("no drives on Unix", 2, l.length); assertTrue("c resolved relative to project\'s basedir", l[0].endsWith("/c")); assertEquals("/test", l[1]); } else if (isNetWare) { assertEquals("volumes on NetWare", 1, l.length); assertEquals("c:\\test", l[0].toLowerCase(Locale.US)); } else { assertEquals("drives on DOS", 1, l.length); assertEquals("c:\\test", l[0].toLowerCase(Locale.US)); } p = new Path(project, "c:/test;d:/programs"); l = p.list(); if (isUnixStyle) { assertEquals("no drives on Unix", 4, l.length); assertTrue("c resolved relative to project\'s basedir", l[0].endsWith("/c")); assertEquals("/test", l[1]); assertTrue("d resolved relative to project\'s basedir", l[2].endsWith("/d")); assertEquals("/programs", l[3]); } else if (isNetWare) { assertEquals("volumes on NetWare", 2, l.length); assertEquals("c:\\test", l[0].toLowerCase(Locale.US)); assertEquals("d:\\programs", l[1].toLowerCase(Locale.US)); } else { assertEquals("drives on DOS", 2, l.length); assertEquals("c:\\test", l[0].toLowerCase(Locale.US)); assertEquals("d:\\programs", l[1].toLowerCase(Locale.US)); } } public void testConstructorNetWareStyle() { // try a netware-volume length path, see how it is handled Path p = new Path(project, "sys:\\test"); String[] l = p.list(); if (isUnixStyle) { assertEquals("no drives on Unix", 2, l.length); assertTrue("sys resolved relative to project\'s basedir", l[0].endsWith("/sys")); assertEquals("/test", l[1]); } else if (isNetWare) { assertEquals("sys:\\test", l[0].toLowerCase(Locale.US)); assertEquals("volumes on NetWare", 1, l.length); } else { assertEquals("no multiple character-length volumes on Windows", 2, l.length); assertTrue("sys resolved relative to project\'s basedir", l[0].endsWith("\\sys")); assertTrue("test resolved relative to project\'s basedir", l[1].endsWith("\\test")); } // try a multi-part netware-volume length path, see how it is handled p = new Path(project, "sys:\\test;dev:\\temp"); l = p.list(); if (isUnixStyle) { assertEquals("no drives on Unix", 4, l.length); assertTrue("sys resolved relative to project\'s basedir", l[0].endsWith("/sys")); assertEquals("/test", l[1]); assertTrue("dev resolved relative to project\'s basedir", l[2].endsWith("/dev")); assertEquals("/temp", l[3]); } else if (isNetWare) { assertEquals("volumes on NetWare", 2, l.length); assertEquals("sys:\\test", l[0].toLowerCase(Locale.US)); assertEquals("dev:\\temp", l[1].toLowerCase(Locale.US)); } else { assertEquals("no multiple character-length volumes on Windows", 4, l.length); assertTrue("sys resolved relative to project\'s basedir", l[0].endsWith("\\sys")); assertTrue("test resolved relative to project\'s basedir", l[1].endsWith("\\test")); assertTrue("dev resolved relative to project\'s basedir", l[2].endsWith("\\dev")); assertTrue("temp resolved relative to project\'s basedir", l[3].endsWith("\\temp")); } // try a netware-volume length path w/forward slash, see how it is handled p = new Path(project, "sys:/test"); l = p.list(); if (isUnixStyle) { assertEquals("no drives on Unix", 2, l.length); assertTrue("sys resolved relative to project\'s basedir", l[0].endsWith("/sys")); assertEquals("/test", l[1]); } else if (isNetWare) { assertEquals("volumes on NetWare", 1, l.length); assertEquals("sys:\\test", l[0].toLowerCase(Locale.US)); } else { assertEquals("no multiple character-length volumes on Windows", 2, l.length); assertTrue("sys resolved relative to project\'s basedir", l[0].endsWith("\\sys")); assertTrue("test resolved relative to project\'s basedir", l[1].endsWith("\\test")); } // try a multi-part netware-volume length path w/forward slash, see how it is handled p = new Path(project, "sys:/test;dev:/temp"); l = p.list(); if (isUnixStyle) { assertEquals("no drives on Unix", 4, l.length); assertTrue("sys resolved relative to project\'s basedir", l[0].endsWith("/sys")); assertEquals("/test", l[1]); assertTrue("dev resolved relative to project\'s basedir", l[2].endsWith("/dev")); assertEquals("/temp", l[3]); } else if (isNetWare) { assertEquals("volumes on NetWare", 2, l.length); assertEquals("sys:\\test", l[0].toLowerCase(Locale.US)); assertEquals("dev:\\temp", l[1].toLowerCase(Locale.US)); } else { assertEquals("no multiple character-length volumes on Windows", 4, l.length); assertTrue("sys resolved relative to project\'s basedir", l[0].endsWith("\\sys")); assertTrue("test resolved relative to project\'s basedir", l[1].endsWith("\\test")); assertTrue("dev resolved relative to project\'s basedir", l[2].endsWith("\\dev")); assertTrue("temp resolved relative to project\'s basedir", l[3].endsWith("\\temp")); } // try a multi-part netware-volume length path with UNIX // separator (this testcase if from an actual bug that was // found, in AvailableTest, which uses PathTokenizer) p = new Path(project, "SYS:\\JAVA/lib/rt.jar:SYS:\\JAVA/lib/classes.zip"); l = p.list(); if (isUnixStyle) { assertEquals("no drives on Unix", 3, l.length); assertTrue("sys resolved relative to project\'s basedir", l[0].endsWith("/SYS")); assertEquals("/JAVA/lib/rt.jar", l[1]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -