/*
* Copyright (C) 2014 Civilian Framework.
*
* Licensed under the Civilian License (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.civilian-framework.org/license.txt
*
* 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.civilian.util;
import java.lang.annotation.Annotation;
import org.junit.Test;
import org.civilian.CivTest;
import org.civilian.util.ClassUtil;
public class ClassUtilTest extends CivTest
{
public enum EnumTest
{
ALPHA,
BETA
}
@Test public void testIsA()
{
assertTrue(ClassUtil.isA("", CharSequence.class));
assertTrue(ClassUtil.isA("", String.class));
assertFalse(ClassUtil.isA(Integer.valueOf(2), String.class));
assertFalse(ClassUtil.isA(null, String.class));
assertFalse(ClassUtil.isA(null, null));
assertFalse(ClassUtil.isA("", null));
}
@Test public void testNameMethods()
{
assertEquals("Test", ClassUtil.cutPackageName("Test"));
assertEquals("String", ClassUtil.cutPackageName("java.lang.String"));
}
@Test public void testPackageName()
{
assertEquals(null, ClassUtil.getPackageName((String)null));
assertEquals(null, ClassUtil.getPackageName((Class<?>)null));
assertEquals(null, ClassUtil.getPackageName("Abc"));
assertEquals("org.civilian.util", ClassUtil.getPackageName(getClass()));
assertEquals("org.civilian.util", ClassUtil.getPackageName(getClass().getName()));
}
@Test public void testCreate() throws Exception
{
assertSame(getClass(), ClassUtil.createObject(getClass().getName(), CivTest.class, null).getClass());
assertSame(getClass(), ClassUtil.getPotentialClass(getClass().getName(), CivTest.class, null));
assertNull(ClassUtil.getPotentialClass("x", String.class, null));
try
{
ClassUtil.getClass("x", String.class, null);
fail();
}
catch(ClassNotFoundException e)
{
}
try
{
ClassUtil.getClass(getClass().getName(), String.class, null);
fail();
}
catch(IllegalArgumentException e)
{
}
}
@Test public void testAnnotation() throws Exception
{
Annotation[] annos = getClass().getMethod("testAnnotation").getAnnotations();
assertTrue(ClassUtil.isA(annos[0], Test.class));
assertEquals(annos[0], ClassUtil.findAnnotation(annos, Test.class));
assertEquals(null, ClassUtil.findAnnotation(annos, SuppressWarnings.class));
}
@Test public void testUnwrap() throws Exception
{
Object a = "a";
assertEquals(a, ClassUtil.unwrap(a, String.class));
assertNull(ClassUtil.unwrap(a, Integer.class));
}
@Test public void testEnum() throws Exception
{
assertEquals(EnumTest.ALPHA, ClassUtil.getEnum(EnumTest.class, "ALPHA", null));
assertEquals(EnumTest.BETA, ClassUtil.getEnum(EnumTest.class, "GAMMA", EnumTest.BETA));
}
@Test public void testResourcePath()
{
assertEquals("java/lang", ClassUtil.buildResourcePath(String.class));
assertEquals("java/lang/test.txt", ClassUtil.buildResourceFile(String.class, "test.txt"));
}
}