blob: f5116c1129716b97ae6f6643001e7f66487727e6 [file] [log] [blame]
/*
* 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.openide.util;
import java.io.File;
import java.net.URI;
import java.util.Locale;
import org.netbeans.junit.NbTestCase;
/**
*
* @author Jiri Rechtacek et al.
*/
public class BaseUtilitiesTest extends NbTestCase {
private String originalOsName;
public BaseUtilitiesTest(String name) {
super(name);
}
@Override
protected void setUp() throws Exception {
super.setUp();
BaseUtilities.resetOperatingSystem ();
originalOsName = System.getProperty("os.name");
}
@Override
protected void tearDown() throws Exception {
System.setProperty("os.name", originalOsName);
super.tearDown();
}
public void testGetOperatingSystemWinNT () {
System.setProperty ("os.name", "Windows NT");
//assertEquals ("System.getProperty (os.name) returns Windows NT", "Windows NT", System.getProperty ("os.name"));
assertEquals ("Windows NT recognized as OS_WINNT", BaseUtilities.OS_WINNT, BaseUtilities.getOperatingSystem ());
}
public void testGetOperatingSystemFreebsd () {
System.setProperty ("os.name", "FreeBSD");
assertEquals ("System.getProperty (os.name) returns FreeBSD", "FreeBSD", System.getProperty ("os.name"));
assertEquals ("System.getProperty (os.name) returns freebsd", "freebsd", System.getProperty ("os.name").toLowerCase (Locale.US));
assertEquals ("FreeBSD recognized as OS_FREEBSD", BaseUtilities.OS_FREEBSD, BaseUtilities.getOperatingSystem ());
}
public void testGetOperatingSystemFreeBSDLowerCase () {
System.setProperty ("os.name", "freebsd");
assertEquals ("FreeBSD recognized as OS_FREEBSD", BaseUtilities.OS_FREEBSD, BaseUtilities.getOperatingSystem ());
}
public void testGetUnknownOperatingSystem () {
System.setProperty ("os.name", "Unknown");
if (File.pathSeparatorChar == ':') {
assertTrue("Unknown os.name should be recognized as Unix.", BaseUtilities.isUnix());
} else {
assertEquals("Unknown os.name not OS_OTHER.", BaseUtilities.OS_OTHER, BaseUtilities.getOperatingSystem());
}
}
public void testWhatIsWinXP () {
System.setProperty ("os.name", "Windows XP");
assertTrue ("Windows XP isWindows", BaseUtilities.isWindows ());
assertFalse ("Windows XP not isUnix", BaseUtilities.isUnix ());
}
public void testWhatIsLinux () {
System.setProperty ("os.name", "Linux");
assertFalse ("Linux not isWindows", BaseUtilities.isWindows ());
assertTrue ("Linux isUnix", BaseUtilities.isUnix ());
}
public void testWhatIsMac () {
System.setProperty ("os.name", "Mac OS X");
assertFalse ("Mac not isWindows", BaseUtilities.isWindows ());
assertTrue ("Mac isMac", BaseUtilities.isMac ());
}
public void testWhatIsFreeBSD () {
System.setProperty ("os.name", "freebsd");
assertFalse ("freebsd is not isWindows", BaseUtilities.isWindows ());
assertTrue ("freebsd isUnix", BaseUtilities.isUnix ());
}
public void testIsJavaIdentifier() throws Exception {
assertTrue(BaseUtilities.isJavaIdentifier("whatever"));
assertTrue(BaseUtilities.isJavaIdentifier("Ю"));
assertTrue(BaseUtilities.isJavaIdentifier("_someThing$99"));
assertFalse(BaseUtilities.isJavaIdentifier("99z"));
assertFalse(BaseUtilities.isJavaIdentifier("assert"));
assertFalse(BaseUtilities.isJavaIdentifier("null"));
assertFalse(BaseUtilities.isJavaIdentifier(""));
assertFalse(BaseUtilities.isJavaIdentifier(null));
assertFalse(BaseUtilities.isJavaIdentifier("some.thing"));
}
public void testFileURI() throws Exception {
if (BaseUtilities.isWindows()) {
assertFileURI("C:\\some\\path #1", "file:/C:/some/path%20%231");
assertEquals(new File("C:\\some\\path"), BaseUtilities.toFile(new URI("file:/C:/some/path")));
assertEquals(new File("C:\\some\\path"), BaseUtilities.toFile(new URI("file:///C:/some/path")));
assertEquals(new File("C:\\some\\path"), BaseUtilities.toFile(new URI("file:/C:/some/path/")));
assertFileURI("\\\\server\\share\\path", "file://server/share/path");
assertEquals(new File("\\\\server\\share\\path"), BaseUtilities.toFile(new URI("file:////server/share/path")));
assertEquals(new File("\\\\server\\share\\path #1"), BaseUtilities.toFile(new URI("file:////server/share/path%20%231")));
} else {
assertFileURI("/some/path #1", "file:/some/path%20%231");
assertEquals(new File("/some/path"), BaseUtilities.toFile(new URI("file:/some/path")));
assertEquals(new File("/some/path"), BaseUtilities.toFile(new URI("file:///some/path")));
assertEquals(new File("/some/path"), BaseUtilities.toFile(new URI("file:/some/path/")));
}
String s = BaseUtilities.toURI(getWorkDir()).toString();
assertTrue(s, s.endsWith("/"));
URI jar = BaseUtilities.toURI(new File(getWorkDir(), "some.jar"));
URI jarN = jar.resolve("some.jar");
assertEquals(jar, jarN);
URI jarR = new URI("jar:" + jar + "!/");
URI jarNR = new URI("jar:" + jarN + "!/");
assertEquals("#214131: equal even when wrapped", jarR, jarNR);
// XXX test that IllegalArgumentException is thrown where appropriate
}
private static void assertFileURI(String file, String uri) throws Exception {
URI u = new URI(uri);
File f = new File(file);
assertEquals(u, BaseUtilities.toURI(f));
assertEquals(f, BaseUtilities.toFile(u));
}
public void testParseParameters1() {
String[] args = BaseUtilities.parseParameters("\"c:\\program files\\jdk\\bin\\java\" -Dmessage=\"Hello /\\\\/\\\\ there!\" -Xmx128m");
assertEquals(3, args.length);
assertEquals("c:\\program files\\jdk\\bin\\java", args[0]);
assertEquals("-Dmessage=Hello /\\/\\ there!", args[1]);
assertEquals("-Xmx128m", args[2]);
}
public void testParseParameters2() {
String[] args = BaseUtilities.parseParameters("c:\\program files\\jdk\\bin\\java -Xmx128m");
assertEquals(3, args.length);
assertEquals("c:\\program", args[0]);
assertEquals("files\\jdk\\bin\\java", args[1]);
assertEquals("-Xmx128m", args[2]);
}
public void testParseParameters3() {
String[] args = BaseUtilities.parseParameters("\"-Xmx128m");
assertEquals(1, args.length);
assertEquals("-Xmx128m", args[0]);
}
public void testParseParameters4() {
String[] args = BaseUtilities.parseParameters("'-Xmx128m");
assertEquals(1, args.length);
assertEquals("-Xmx128m", args[0]);
}
public void testParseParameters5() {
String[] args = BaseUtilities.parseParameters("-Dmessage='Hello \"NetBeans\"'");
assertEquals(1, args.length);
assertEquals("-Dmessage=Hello \"NetBeans\"", args[0]);
}
public void testParseParameters6() {
String[] args = BaseUtilities.parseParameters("'c:\\program files\\jdk\\bin\\java'\n-Dmessage='Hello /\\/\\ there!' \t -Xmx128m");
assertEquals(3, args.length);
assertEquals("c:\\program files\\jdk\\bin\\java", args[0]);
assertEquals("-Dmessage=Hello /\\/\\ there!", args[1]);
assertEquals("-Xmx128m", args[2]);
}
public void testParseParameters7() {
String[] args = BaseUtilities.parseParameters("-Dmessage=\"NetBeans\" \"\" 'third\narg'");
assertEquals(3, args.length);
assertEquals("-Dmessage=NetBeans", args[0]);
assertEquals("", args[1]);
assertEquals("third\narg", args[2]);
}
public void testParseParameters8() {
String[] args = BaseUtilities.parseParameters("-Dmessage=\"NetBeans\" \"\" \"third\\narg\"");
assertEquals(3, args.length);
assertEquals("-Dmessage=NetBeans", args[0]);
assertEquals("", args[1]);
assertEquals("third\\narg", args[2]);
}
}