001/*
002 *  Copyright 2010 Christopher Pheby
003 *
004 *  Licensed under the Apache License, Version 2.0 (the "License");
005 *  you may not use this file except in compliance with the License.
006 *  You may obtain a copy of the License at
007 *
008 *      http://www.apache.org/licenses/LICENSE-2.0
009 *
010 *  Unless required by applicable law or agreed to in writing, software
011 *  distributed under the License is distributed on an "AS IS" BASIS,
012 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 *  See the License for the specific language governing permissions and
014 *  limitations under the License.
015 */
016package org.jadira.bindings.core.utils.reflection;
017
018import static org.junit.Assert.assertEquals;
019
020import java.net.URL;
021
022import org.junit.Test;
023
024public class ClassUtilsTest {
025
026    @Test
027    public void testGetClass() {
028        
029        String className = "java.net.URL";
030
031        assertEquals(URL.class, ClassUtils.getClass(getClass().getClassLoader(), className));
032        assertEquals(URL.class, ClassUtils.getClass(getClass().getClassLoader(), className + " "));
033        assertEquals(new URL[]{}.getClass(), ClassUtils.getClass(getClass().getClassLoader(), className + "[]"));
034        assertEquals(new URL[][]{}.getClass(), ClassUtils.getClass(getClass().getClassLoader(), className + "[][]"));
035
036        assertEquals(Long.TYPE, ClassUtils.getClass(getClass().getClassLoader(), "long"));
037        assertEquals(Boolean.TYPE, ClassUtils.getClass(getClass().getClassLoader(), "boolean"));
038        assertEquals(Float.TYPE, ClassUtils.getClass(getClass().getClassLoader(), "float"));
039        assertEquals(Short.TYPE, ClassUtils.getClass(getClass().getClassLoader(), "short"));
040        assertEquals(Byte.TYPE, ClassUtils.getClass(getClass().getClassLoader(), "byte"));
041        assertEquals(Double.TYPE, ClassUtils.getClass(getClass().getClassLoader(), "double"));
042        assertEquals(Character.TYPE, ClassUtils.getClass(getClass().getClassLoader(), "char"));
043        
044        assertEquals(new long[]{}.getClass(), ClassUtils.getClass(getClass().getClassLoader(), "long[]"));
045        assertEquals(new boolean[]{}.getClass(), ClassUtils.getClass(getClass().getClassLoader(), "boolean[]"));
046        assertEquals(new float[]{}.getClass(), ClassUtils.getClass(getClass().getClassLoader(), "float[]"));
047        assertEquals(new short[]{}.getClass(), ClassUtils.getClass(getClass().getClassLoader(), "short[]"));
048        assertEquals(new byte[]{}.getClass(), ClassUtils.getClass(getClass().getClassLoader(), "byte[]"));
049        assertEquals(new double[]{}.getClass(), ClassUtils.getClass(getClass().getClassLoader(), "double[]"));
050        assertEquals(new char[]{}.getClass(), ClassUtils.getClass(getClass().getClassLoader(), "char[]"));
051        
052        assertEquals(new long[][]{}.getClass(), ClassUtils.getClass(getClass().getClassLoader(), "long[][]"));        
053    }
054    
055    @Test
056    public void testDetermineQualifiedName() {
057        
058        String className = "org.jadira.bindings.core.utils.string.ClassUtilsTest";
059        
060        assertEquals("org.jadira.bindings.core.utils.string.ClassUtilsTest", ClassUtils.determineQualifiedName(className));
061        assertEquals("org.jadira.bindings.core.utils.string.ClassUtilsTest", ClassUtils.determineQualifiedName(className + " "));
062        assertEquals("[Lorg.jadira.bindings.core.utils.string.ClassUtilsTest;", ClassUtils.determineQualifiedName(className + "[]"));
063        assertEquals("[[Lorg.jadira.bindings.core.utils.string.ClassUtilsTest;", ClassUtils.determineQualifiedName(className + "[][]"));
064
065        assertEquals("long", ClassUtils.determineQualifiedName("long"));
066        assertEquals("boolean", ClassUtils.determineQualifiedName("boolean"));
067        assertEquals("float", ClassUtils.determineQualifiedName("float"));
068        assertEquals("short", ClassUtils.determineQualifiedName("short"));
069        assertEquals("byte", ClassUtils.determineQualifiedName("byte"));
070        assertEquals("double", ClassUtils.determineQualifiedName("double"));
071        assertEquals("char", ClassUtils.determineQualifiedName("char"));
072        
073        assertEquals("[J", ClassUtils.determineQualifiedName("long[]"));
074        assertEquals("[Z", ClassUtils.determineQualifiedName("boolean[]"));
075        assertEquals("[F", ClassUtils.determineQualifiedName("float[]"));
076        assertEquals("[S", ClassUtils.determineQualifiedName("short[]"));
077        assertEquals("[B", ClassUtils.determineQualifiedName("byte[]"));
078        assertEquals("[D", ClassUtils.determineQualifiedName("double[]"));
079        assertEquals("[C", ClassUtils.determineQualifiedName("char[]"));
080        
081        assertEquals("[[J", ClassUtils.determineQualifiedName("long[][]"));
082        
083        assertEquals("[[Ljava.net.URL;", ClassUtils.determineQualifiedName("java.net.URL[][]"));
084    }
085    
086    @Test
087    public void testDetermineReadableClassName() {
088        
089        String className = "org.jadira.bindings.core.utils.string.ClassUtilsTest";
090        
091        assertEquals("org.jadira.bindings.core.utils.string.ClassUtilsTest", ClassUtils.determineReadableClassName(className));
092        assertEquals("org.jadira.bindings.core.utils.string.ClassUtilsTest", ClassUtils.determineReadableClassName(className + " "));
093        assertEquals("org.jadira.bindings.core.utils.string.ClassUtilsTest[]", ClassUtils.determineReadableClassName("[L" + className + ";"));
094        assertEquals("org.jadira.bindings.core.utils.string.ClassUtilsTest[][]", ClassUtils.determineReadableClassName("[[L" + className + ";"));
095
096        assertEquals("long", ClassUtils.determineReadableClassName("long"));
097        assertEquals("boolean", ClassUtils.determineReadableClassName("boolean"));
098        assertEquals("float", ClassUtils.determineReadableClassName("float"));
099        assertEquals("short", ClassUtils.determineReadableClassName("short"));
100        assertEquals("byte", ClassUtils.determineReadableClassName("byte"));
101        assertEquals("double", ClassUtils.determineReadableClassName("double"));
102        assertEquals("char", ClassUtils.determineReadableClassName("char"));
103        
104        assertEquals("long[]", ClassUtils.determineReadableClassName("[J"));
105        assertEquals("boolean[]", ClassUtils.determineReadableClassName("[Z"));
106        assertEquals("float[]", ClassUtils.determineReadableClassName("[F"));
107        assertEquals("short[]", ClassUtils.determineReadableClassName("[S"));
108        assertEquals("byte[]", ClassUtils.determineReadableClassName("[B"));
109        assertEquals("double[]", ClassUtils.determineReadableClassName("[D"));
110        assertEquals("char[]", ClassUtils.determineReadableClassName("[C"));
111        
112        assertEquals("long[][]", ClassUtils.determineReadableClassName("[[J"));
113        
114        assertEquals("java.net.URL[][]", ClassUtils.determineReadableClassName("[[Ljava.net.URL;"));
115    }
116}