/**
* Copyright 2011-2015 John Ericksen
*
* 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.androidtransfuse.adapter;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* @author John Ericksen
*/
public class PackageClassTest {
private static final String PACKAGE_NAME = "org.test";
private static final String CLASS_NAME = "ClassName";
private static final String FULLY_QUALIFIED_NAME = PACKAGE_NAME + "." + CLASS_NAME;
private static final String DOT_JAVA = ".java";
private static final String TEST_NAME = "Name";
public static class Inner$Stuff {
}
@Test
public void testClassInput() {
PackageClass packageClass = new PackageClass(PackageClassTest.class);
assertEquals(PackageClassTest.class.getName(), packageClass.getFullyQualifiedName());
assertEquals(PackageClassTest.class.getSimpleName(), packageClass.getClassName());
assertEquals(PackageClassTest.class.getPackage().getName(), packageClass.getPackage());
assertEquals(PackageClassTest.class.getCanonicalName(), packageClass.getCanonicalName());
}
@Test
public void testInnerClassInput() {
PackageClass packageClass = new PackageClass(Inner$Stuff.class);
assertEquals(PackageClassTest.Inner$Stuff.class.getName(), packageClass.getFullyQualifiedName());
assertEquals(PackageClassTest.class.getSimpleName() + "$" + PackageClassTest.Inner$Stuff.class.getSimpleName(), packageClass.getClassName());
assertEquals(PackageClassTest.Inner$Stuff.class.getPackage().getName(), packageClass.getPackage());
assertEquals(PackageClassTest.Inner$Stuff.class.getCanonicalName(), packageClass.getCanonicalName());
}
@Test
public void testClassNameParsing() {
PackageClass packageClass = new PackageClass(FULLY_QUALIFIED_NAME);
assertEquals(FULLY_QUALIFIED_NAME, packageClass.getCanonicalName());
}
@Test
public void testSeparateClassPackage() {
PackageClass packageClass = new PackageClass(PACKAGE_NAME, CLASS_NAME);
assertEquals(FULLY_QUALIFIED_NAME, packageClass.getCanonicalName());
}
@Test
public void testDotJavaRemoval() {
PackageClass packageClass = new PackageClass(FULLY_QUALIFIED_NAME + DOT_JAVA);
assertEquals(FULLY_QUALIFIED_NAME, packageClass.getCanonicalName());
}
@Test
public void testAppend() {
PackageClass packageClass = new PackageClass(FULLY_QUALIFIED_NAME).append(TEST_NAME);
assertEquals(FULLY_QUALIFIED_NAME + TEST_NAME, packageClass.getCanonicalName());
}
@Test
public void testNoPackage() {
PackageClass packageClass = new PackageClass(CLASS_NAME);
assertEquals(CLASS_NAME, packageClass.getCanonicalName());
}
@Test
public void testReplace() {
PackageClass packageClass = new PackageClass(FULLY_QUALIFIED_NAME).replaceName(TEST_NAME);
assertEquals(PACKAGE_NAME + "." + TEST_NAME, packageClass.getCanonicalName());
}
@Test
public void testEquals() {
PackageClass one = new PackageClass(FULLY_QUALIFIED_NAME);
PackageClass two = new PackageClass(FULLY_QUALIFIED_NAME);
PackageClass three = one.append(TEST_NAME);
assertEquals(one, two);
assertFalse(one.equals(three));
assertEquals(one.hashCode(), two.hashCode());
assertNotSame(one.hashCode(), three.hashCode());
}
}