DefaultJavaClassIT.java
package com.thoughtworks.qdox.model.impl;
import com.thoughtworks.qdox.library.ClassLoaderLibrary;
import com.thoughtworks.qdox.model.BeanProperty;
import com.thoughtworks.qdox.model.JavaClass;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class DefaultJavaClassIT
{
private ClassLoaderLibrary library;
@BeforeEach
public void setUp()
{
library = new ClassLoaderLibrary( null );
library.addDefaultLoader();
}
@Test
public void testSuperJavaClass() throws Exception
{
JavaClass hashSetClass = library.getJavaClass( "java.util.HashSet" );
Assertions.assertTrue(hashSetClass instanceof DefaultJavaClass);
JavaClass superClass = hashSetClass.getSuperJavaClass();
Assertions.assertEquals("java.util.AbstractSet", superClass.getFullyQualifiedName());
Assertions.assertEquals("java.util.AbstractSet", Class.forName( "java.util.HashSet" ).getSuperclass().getName());
}
@Test
public void testIsAJavaClass() throws Exception
{
JavaClass hashSetClass = library.getJavaClass( "java.util.HashSet" );
Assertions.assertTrue(hashSetClass instanceof DefaultJavaClass);
JavaClass setClass = library.getJavaClass( "java.util.Set" );
Assertions.assertTrue(hashSetClass.isA( setClass ));
Assertions.assertTrue(hashSetClass.isA( "java.util.Set" ));
//watch it!! isA() is the inverse of isAssignableFrom()
Assertions.assertTrue(Class.forName( "java.util.Set" ).isAssignableFrom( Class.forName( "java.util.HashSet" ) ));
}
@Test
public void testDeclaringClass() throws Exception
{
JavaClass entryClass = library.getJavaClass( "java.util.Map$Entry" );
Assertions.assertTrue(entryClass instanceof DefaultJavaClass);
Assertions.assertEquals("java.util.Map", entryClass.getDeclaringClass().getFullyQualifiedName());
Assertions.assertEquals("java.util.Map", Class.forName( "java.util.Map$Entry" ).getDeclaringClass().getName());
}
@Test
public void testDeclaredClasses() throws Exception {
JavaClass mapClass = library.getJavaClass( "java.util.Map" );
Assertions.assertTrue(mapClass instanceof DefaultJavaClass);
Assertions.assertEquals(1, mapClass.getNestedClasses().size());
Assertions.assertEquals("java.util.Map$Entry", mapClass.getNestedClassByName( "Entry" ).getBinaryName());
Assertions.assertEquals("java.util.Map.Entry", mapClass.getNestedClassByName( "Entry" ).getFullyQualifiedName());
Assertions.assertEquals(1, Class.forName( "java.util.Map" ).getDeclaredClasses().length);
Assertions.assertEquals("java.util.Map$Entry", Class.forName( "java.util.Map" ).getDeclaredClasses()[0].getName());
}
@Test
public void testBeanProperty() throws Exception
{
JavaClass entryClass = library.getJavaClass( "java.util.Map$Entry" );
BeanProperty valueBean = entryClass.getBeanProperty( "value" );
Assertions.assertNotNull(valueBean);
Assertions.assertEquals("java.lang.Object", valueBean.getType().getFullyQualifiedName());
Assertions.assertNotNull(valueBean.getAccessor());
Assertions.assertEquals("public abstract java.lang.Object java.util.Map$Entry.getValue()", Class.forName( "java.util.Map$Entry" ).getMethod("getValue").toString());
Assertions.assertEquals("public abstract java.lang.Object java.util.Map$Entry.getValue()", valueBean.getAccessor().toString());
Assertions.assertNotNull(valueBean.getMutator());
Assertions.assertEquals("public abstract java.lang.Object java.util.Map$Entry.setValue(java.lang.Object)", valueBean.getMutator().toString());
BeanProperty keyBean = entryClass.getBeanProperty( "key" );
Assertions.assertNotNull(keyBean.getAccessor());
Assertions.assertEquals("public abstract java.lang.Object java.util.Map$Entry.getKey()", keyBean.getAccessor().toString());
Assertions.assertNull(keyBean.getMutator());
}
@Test
public void testNames() throws Exception
{
//subclass
JavaClass entryClass = library.getJavaClass( "java.util.Map$Entry" );
Assertions.assertTrue(entryClass instanceof DefaultJavaClass);
Assertions.assertEquals("java.util.Map$Entry", entryClass.getBinaryName());
Assertions.assertEquals("java.util.Map.Entry", entryClass.getFullyQualifiedName());
Assertions.assertEquals("java.util.Map$Entry", Class.forName( "java.util.Map$Entry" ).getName());
Assertions.assertEquals("java.util.Map.Entry", entryClass.getCanonicalName());
Assertions.assertEquals("java.util.Map.Entry", Class.forName( "java.util.Map$Entry" ).getCanonicalName());
Assertions.assertEquals("Map.Entry", entryClass.getValue());
}
}