package org.qi4j.bootstrap;
import org.junit.Assert;
import org.junit.Test;
import org.qi4j.api.activation.ActivationException;
import org.qi4j.bootstrap.somepackage.Test2Value;
import org.qi4j.functional.Iterables;
import static org.qi4j.bootstrap.ClassScanner.findClasses;
import static org.qi4j.bootstrap.ClassScanner.matches;
import static org.qi4j.functional.Iterables.filter;
/**
* Test and showcase of the ClassScanner assembly utility.
*/
public class ClassScannerTest
{
@Test
public void testClassScannerFiles()
throws ActivationException, AssemblyException
{
SingletonAssembler singleton = new SingletonAssembler()
{
@Override
public void assemble( ModuleAssembly module )
throws AssemblyException
{
// Find all classes starting from TestValue, but include only the ones that are named *Value
for( Class aClass : filter( matches( ".*Value" ), findClasses( TestValue.class ) ) )
{
module.values( aClass );
}
}
};
singleton.module().newValueBuilder( TestValue.class );
singleton.module().newValueBuilder( Test2Value.class );
}
@Test
public void testClassScannerJar()
{
Assert.assertEquals( 138, Iterables.count( findClasses( Test.class ) ) );
}
}