/*
* Copyright 2007 Joachim Grueneis
*
* Licensed 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.castor.xml;
import junit.framework.Assert;
import junit.framework.TestCase;
/**
* @author Joachim Grueneis, jgrueneis_at_gmail_dot_com
* @version $Id$
*/
public class JavaNamingTest extends TestCase {
private static final String[] VALID_NAMES = {"name", "myName", "my_name", "NAME"};
private static final String[] INVALID_NAMES = {"my-name", "my----name"};
private static final String PS = System.getProperty("file.separator");
private JavaNaming _javaNaming = new JavaNamingImpl();
/**
* @param arg0
*/
public JavaNamingTest(final String arg0) {
super(arg0);
}
/**
* Test method for
* {@link org.castor.xml.JavaNamingImpl#isKeyword(java.lang.String)}.
*/
public final void testIsKeyword() {
Assert.assertFalse("A null String is no keyword", _javaNaming.isKeyword(null));
Assert.assertFalse("An empty String is no keyword", _javaNaming.isKeyword(""));
for (int i = 0; i < VALID_NAMES.length; i++) {
String aName = VALID_NAMES[i];
Assert.assertFalse(
"Name: " + aName + " is no keyword!", _javaNaming.isKeyword(aName));
}
}
/**
* Test method for
* {@link org.castor.xml.JavaNamingImpl#isValidJavaIdentifier(java.lang.String)}.
*/
public final void testIsValidJavaIdentifier() {
Assert.assertFalse(
"A null String is no identifier", _javaNaming.isValidJavaIdentifier(null));
Assert.assertFalse(
"An empty String is no identifier", _javaNaming.isValidJavaIdentifier(""));
for (int i = 0; i < VALID_NAMES.length; i++) {
String aName = VALID_NAMES[i];
Assert.assertTrue(
"Name: " + aName + " should be valid!", _javaNaming.isValidJavaIdentifier(aName));
}
for (int i = 0; i < INVALID_NAMES.length; i++) {
String aName = INVALID_NAMES[i];
Assert.assertFalse(
"Name: " + aName + " should be invalid!", _javaNaming.isValidJavaIdentifier(aName));
}
}
/**
* Test method for
* {@link org.castor.xml.JavaNamingImpl#toJavaClassName(java.lang.String)}.
*/
public final void testToJavaClassName() {
Assert.assertEquals("For null in and out should be equals", null, _javaNaming.toJavaClassName(null));
Assert.assertEquals("For an empty string in and out should be equals", "", _javaNaming.toJavaClassName(""));
}
/**
* Test method for
* {@link org.castor.xml.JavaNamingImpl#toJavaMemberName(java.lang.String)}.
*/
public final void testToJavaMemberNameString() {
Assert.assertEquals("For null in and out should be equals", null, _javaNaming.toJavaMemberName(null));
Assert.assertEquals("For an empty string in and out should be equals", "", _javaNaming.toJavaMemberName(""));
}
/**
* Test method for
* {@link org.castor.xml.JavaNamingImpl#toJavaMemberName(java.lang.String, boolean)}.
*/
public final void testToJavaMemberNameStringBoolean() {
Assert.assertEquals("For null in and out should be equals", null, _javaNaming.toJavaMemberName(null, true));
Assert.assertEquals("For an empty string in and out should be equals", "", _javaNaming.toJavaMemberName("", true));
Assert.assertEquals("For null in and out should be equals", null, _javaNaming.toJavaMemberName(null, false));
Assert.assertEquals("For an empty string in and out should be equals", "", _javaNaming.toJavaMemberName("", false));
}
/**
* Test method for
* {@link org.castor.xml.JavaNamingImpl#packageToPath(java.lang.String)}.
*/
public final void testPackageToPath() {
Assert.assertEquals("For null in and out should be equals", null, _javaNaming.packageToPath(null));
Assert.assertEquals("For an empty string in and out should be equals", "", _javaNaming.packageToPath(""));
Assert.assertEquals("org" + PS + "castor" + PS + "xml",
_javaNaming.packageToPath("org.castor.xml"));
try {
_javaNaming.packageToPath(".");
Assert.fail("Invalid package name must not be converted!");
} catch (IllegalArgumentException e) {
// expected!!
}
Assert.assertEquals("org", _javaNaming.packageToPath("org"));
try {
_javaNaming.packageToPath(".org");
Assert.fail("Invalid package name must not be converted!");
} catch (IllegalArgumentException e) {
// expected!!
}
try {
_javaNaming.packageToPath("org.");
Assert.fail("Invalid package name must not be converted!");
} catch (IllegalArgumentException e) {
// expected!!
}
}
/**
* Test method for
* {@link org.castor.xml.JavaNamingImpl#getQualifiedFileName(java.lang.String,java.lang.String)}.
*/
public final void testGetQualifiedFileName() {
Assert.assertEquals("For null in and out should be equals", null, _javaNaming.getQualifiedFileName(null, null));
Assert.assertEquals("For an empty string in and out should be equals", "", _javaNaming.getQualifiedFileName("", ""));
Assert.assertEquals("For an empty string in and out should be equals", null, _javaNaming.getQualifiedFileName(null, ""));
Assert.assertEquals("For an empty string in and out should be equals", "", _javaNaming.getQualifiedFileName("", null));
Assert.assertEquals("org" + PS + "castor" + PS + "xml/",
_javaNaming.getQualifiedFileName("", "org.castor.xml"));
Assert.assertEquals("org" + PS + "castor" + PS + "xml/A.b",
_javaNaming.getQualifiedFileName("A.b", "org.castor.xml"));
Assert.assertEquals("A.b", _javaNaming.getQualifiedFileName("A.b", null));
Assert.assertEquals("A.b", _javaNaming.getQualifiedFileName("A.b", ""));
Assert.assertEquals("org/A.b", _javaNaming.getQualifiedFileName("A.b", "org"));
Assert.assertEquals("org/Anton", _javaNaming.getQualifiedFileName("Anton", "org"));
try {
_javaNaming.getQualifiedFileName("A.b", ".");
Assert.fail("Shouldn't succeed with invalid package name!");
} catch (IllegalArgumentException e) {
// expected
}
try {
_javaNaming.getQualifiedFileName("A.b", ".org");
Assert.fail("Shouldn't succeed with invalid package name!");
} catch (IllegalArgumentException e) {
// expected
}
try {
_javaNaming.getQualifiedFileName("A.b", "org.");
Assert.fail("Shouldn't succeed with invalid package name!");
} catch (IllegalArgumentException e) {
// expected
}
}
/**
* Test method for
* {@link org.castor.xml.JavaNamingImpl#getPackageName(java.lang.String)}.
*/
public final void testGetPackageName() {
Assert.assertEquals("For null in and out should be equals",
null, _javaNaming.getPackageName(null));
Assert.assertEquals("For an empty string in and out should be equals",
"", _javaNaming.getPackageName(""));
Assert.assertEquals("Extracted package name doesn't match",
JavaNamingImpl.class.getPackage().getName(),
_javaNaming.getPackageName(JavaNamingImpl.class.getName()));
Assert.assertEquals("Extracted package name doesn't match",
"", _javaNaming.getPackageName("A"));
}
/**
* Test method for
* {@link org.castor.xml.JavaNamingImpl#isAddMethod(java.lang.reflect.Method)}.
*/
public final void testIsAddMethod() {
Assert.assertFalse(_javaNaming.isAddMethod(null));
}
private class ForTestingPurposes {}
public final void testGetClassName() {
Assert.assertNull(_javaNaming.getClassName(null));
Assert.assertEquals("JavaNamingTest", _javaNaming.getClassName(JavaNamingTest.class));
Assert.assertEquals("JavaNamingTest$ForTestingPurposes", _javaNaming.getClassName(ForTestingPurposes.class));
}
}