JavaClassContextTest.java
package com.thoughtworks.qdox.library;
import com.thoughtworks.qdox.model.JavaClass;
import com.thoughtworks.qdox.model.JavaPackage;
import com.thoughtworks.qdox.model.JavaSource;
import com.thoughtworks.qdox.model.impl.DefaultJavaClass;
import com.thoughtworks.qdox.model.impl.DefaultJavaPackage;
import com.thoughtworks.qdox.model.impl.DefaultJavaSource;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class JavaClassContextTest {
private JavaClassContext context;
@BeforeEach
public void setUp()
throws Exception
{
context = new JavaClassContext();
}
@Test
public void testGetClassByName()
{
Assertions.assertNull(context.getClassByName( null ));
Assertions.assertNull(context.getClassByName( "java.lang.Object" ), "a new context should be empty, not even contain java.lang.Object");
JavaClass clazz = new DefaultJavaClass( "com.foo.Bar" );
context.add( clazz );
//check case sensitive
Assertions.assertNull(context.getClassByName( "com.foo.bar" ));
Assertions.assertEquals(clazz, context.getClassByName( "com.foo.Bar" ));
}
@Test
public void testRemoveClassByName()
{
Assertions.assertNull(context.removeClassByName( null ));
Assertions.assertNull(context.removeClassByName( "com.foo.Bar" ));
JavaClass clazz = new DefaultJavaClass( "com.foo.Bar" );
context.add( clazz );
//check case sensitive
Assertions.assertNull(context.getClassByName( "com.foo.bar" ));
Assertions.assertEquals(clazz, context.removeClassByName( "com.foo.Bar" ));
}
@Test
public void testGetClasses()
{
Assertions.assertNotNull(context.getClasses());
Assertions.assertEquals(0, context.getClasses().size());
JavaClass clazz = new DefaultJavaClass( "com.foo.Bar" );
context.add( clazz );
Assertions.assertEquals(1, context.getClasses().size());
//weird case, add same class
JavaClass clazz_copy = new DefaultJavaClass( "com.foo.Bar" );
context.add( clazz_copy );
Assertions.assertEquals(1, context.getClasses().size());
context.removeClassByName( "com.foo.Bar" );
Assertions.assertNotNull(context.getClasses());
Assertions.assertEquals(0, context.getClasses().size());
}
@Test
public void testAddJavaClass()
{
JavaClass clazz = new DefaultJavaClass( "com.foo.Bar" );
context.add( clazz );
//check case sensitive
Assertions.assertNull(context.getClassByName( "com.foo.bar" ));
Assertions.assertEquals(clazz, context.getClassByName( "com.foo.Bar" ));
//weird case, should never happen
try {
context.add( (JavaClass) null );
}
catch(NullPointerException npe) {}
}
@Test
public void testGetPackageByName()
{
Assertions.assertNull(context.getPackageByName( null ));
Assertions.assertNull(context.getPackageByName( "java.lang" ));
JavaPackage pckg = new DefaultJavaPackage("com.foo");
context.add( pckg );
Assertions.assertEquals(pckg, context.getPackageByName( "com.foo" ));
}
@Test
public void testRemovePackageByName()
{
Assertions.assertNull(context.removePackageByName( null ));
Assertions.assertNull(context.removePackageByName( "com.foo" ));
JavaPackage pckg = new DefaultJavaPackage("com.foo");
context.add( pckg );
Assertions.assertEquals(pckg, context.removePackageByName( "com.foo" ));
}
@Test
public void testAddJavaPackage()
{
JavaPackage pckg = new DefaultJavaPackage("com.foo");
context.add( pckg );
//check case sensitive
Assertions.assertNull(context.getClassByName( "com.bar" ));
Assertions.assertEquals(pckg, context.getPackageByName( "com.foo" ));
//null-safe
context.add( (JavaPackage) null );
}
@Test
public void testGetPackages()
{
Assertions.assertNotNull(context.getPackages());
Assertions.assertEquals(0, context.getPackages().size());
JavaPackage pckg = new DefaultJavaPackage("com.foo");
context.add( pckg );
Assertions.assertEquals(1, context.getPackages().size());
//add same package
JavaPackage pckg_copy = new DefaultJavaPackage("com.foo");
context.add( pckg_copy );
Assertions.assertEquals(1, context.getPackages().size());
context.removePackageByName( "com.foo" );
Assertions.assertNotNull(context.getPackages());
Assertions.assertEquals(0, context.getPackages().size());
}
@Test
public void testAddJavaSource()
{
JavaSource source = new DefaultJavaSource(null);
context.add( source );
//null-safe
context.add( (JavaSource) null );
}
@Test
public void testGetSources()
{
Assertions.assertNotNull(context.getSources());
Assertions.assertEquals(0, context.getSources().size());
JavaSource source = new DefaultJavaSource(null);
context.add( source );
Assertions.assertEquals(1, context.getSources().size());
//every source is unique, just add it
JavaSource source_copy = new DefaultJavaSource(null);
context.add( source_copy );
Assertions.assertEquals(2, context.getSources().size());
}
@Test
public void testAdd() {
context.add(new DefaultJavaClass("com.blah.Ping"));
context.add(new DefaultJavaClass("com.moo.Poo"));
Assertions.assertTrue(context.getClassByName("com.blah.Ping") != null);
Assertions.assertTrue(context.getClassByName("com.moo.Poo") != null);
Assertions.assertTrue(context.getClassByName("com.not.You") == null);
}
}