Components registration - package scanning
This commit is contained in:
parent
0c23f613d6
commit
6d0753c7a8
11 changed files with 169 additions and 2 deletions
src/test/java/info/ebenoit/ebul/cmp
|
@ -5,12 +5,20 @@ import org.junit.Test;
|
|||
|
||||
import info.ebenoit.ebul.func.ThrowingBiConsumer;
|
||||
import info.ebenoit.ebul.func.ThrowingConsumer;
|
||||
import test.inherited.CBase;
|
||||
import test.inherited.CChild;
|
||||
import test.inherited.CChildOfAbstract;
|
||||
import test.interfaces.CImplementation;
|
||||
import test.simple.CSimple;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
|
||||
|
@ -889,4 +897,51 @@ public class TestNewComponentInfo
|
|||
injector.accept( cmp , inject );
|
||||
assertSame( inject , cmp.dependency );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test: {@link NewComponentInfo#scanPackage(String, boolean)} finds a simple {@link Component}-annotated class
|
||||
*/
|
||||
@Test
|
||||
public void testScanPackageSimple( )
|
||||
throws ComponentDefinitionException , ClassNotFoundException , IOException
|
||||
{
|
||||
ArrayList< NewComponentInfo< ? > > result = NewComponentInfo.scanPackage( "test.simple" , false );
|
||||
assertEquals( 1 , result.size( ) );
|
||||
assertSame( CSimple.class , result.get( 0 ).getSupplier( ).get( ).getClass( ) );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test: {@link NewComponentInfo#scanPackage(String, boolean)} finds components that inherit each other, ignoring
|
||||
* abstract classes
|
||||
*/
|
||||
@Test
|
||||
public void testScanPackageInheritance( )
|
||||
throws ComponentDefinitionException , ClassNotFoundException , IOException
|
||||
{
|
||||
ArrayList< NewComponentInfo< ? > > result = NewComponentInfo.scanPackage( "test.inherited" , false );
|
||||
assertEquals( 3 , result.size( ) );
|
||||
|
||||
Set< ? > classes = result.stream( ).map( x -> x.getSupplier( ).get( ).getClass( ) )
|
||||
.collect( Collectors.toSet( ) );
|
||||
assertTrue( classes.contains( CBase.class ) );
|
||||
assertTrue( classes.contains( CChild.class ) );
|
||||
assertTrue( classes.contains( CChildOfAbstract.class ) );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test: {@link NewComponentInfo#scanPackage(String, boolean)} finds components defined by implementing a
|
||||
* {@link Component}-annotated interface
|
||||
*/
|
||||
@Test
|
||||
public void testScanPackageInterfaces( )
|
||||
throws ComponentDefinitionException , ClassNotFoundException , IOException
|
||||
{
|
||||
ArrayList< NewComponentInfo< ? > > result = NewComponentInfo.scanPackage( "test.interfaces" , false );
|
||||
assertEquals( 1 , result.size( ) );
|
||||
|
||||
assertSame( CImplementation.class , result.get( 0 ).getSupplier( ).get( ).getClass( ) );
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue