donaldp 2002/10/04 00:46:34
Modified: info/src/test/org/apache/avalon/framework/tools/infobuilder/test
InfoAssert.java InfoBuilderTestCase.java
Added: info/src/test/org/apache/avalon/framework/tools/infobuilder/test/data
service1-info.xml
Log:
Add in some unit tests to verify loading of ServiceInfos from XML.
Revision Changes Path
1.2 +87 -7
jakarta-avalon-excalibur/info/src/test/org/apache/avalon/framework/tools/infobuilder/test/InfoAssert.java
Index: InfoAssert.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-excalibur/info/src/test/org/apache/avalon/framework/tools/infobuilder/test/InfoAssert.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- InfoAssert.java 4 Oct 2002 07:02:43 -0000 1.1
+++ InfoAssert.java 4 Oct 2002 07:46:33 -0000 1.2
@@ -15,6 +15,9 @@
import org.apache.avalon.framework.info.ServiceDescriptor;
import org.apache.avalon.framework.info.DependencyDescriptor;
import org.apache.avalon.framework.info.EntryDescriptor;
+import org.apache.avalon.framework.info.ServiceInfo;
+import org.apache.avalon.framework.info.MethodDescriptor;
+import org.apache.avalon.framework.info.ParameterDescriptor;
import junit.framework.Assert;
/**
@@ -41,6 +44,73 @@
}
public static void assertEqualInfos( final String message,
+ final ServiceInfo expected,
+ final ServiceInfo actual )
+ {
+ final ServiceDescriptor expectedService = expected.getServiceDescriptor();
+ final ServiceDescriptor actualService = actual.getServiceDescriptor();
+ assertEqualService( message + "Service", expectedService, actualService );
+
+ final MethodDescriptor[] expectedMethods = expected.getMethods();
+ final MethodDescriptor[] actualMethods = actual.getMethods();
+ assertEqualMethods( message + "Methods", expectedMethods, actualMethods );
+ }
+
+ private static void assertEqualMethods( final String message,
+ final MethodDescriptor[] expected,
+ final MethodDescriptor[] actual )
+ {
+ Assert.assertEquals( message + ": Methods.length", expected.length,
actual.length );
+ for( int i = 0; i < expected.length; i++ )
+ {
+ assertEqualMethods( message + ": Dependencys[ " + i + "].",
+ expected[ i ], actual[ i ] );
+ }
+ }
+
+ private static void assertEqualMethods( final String message,
+ final MethodDescriptor expected,
+ final MethodDescriptor actual )
+ {
+ Assert.assertEquals( message + "name",
+ expected.getName(),
+ actual.getName() );
+ Assert.assertEquals( message + "returnType",
+ expected.getReturnType(),
+ actual.getReturnType() );
+ assertEqualMethodParameters( message + "parameters",
+ expected.getParameters(),
+ actual.getParameters() );
+ assertEqualAttributes( message + "attributes",
+ expected.getAttributes(),
+ actual.getAttributes() );
+ }
+
+ private static void assertEqualMethodParameters( final String message,
+ final ParameterDescriptor[]
expected,
+ final ParameterDescriptor[]
actual )
+ {
+ Assert.assertEquals( message + ": Parameters.length", expected.length,
actual.length );
+ for( int i = 0; i < expected.length; i++ )
+ {
+ assertMethodParameter( message + ": Parameter[ " + i + "].",
+ expected[ i ], actual[ i ] );
+ }
+ }
+
+ private static void assertMethodParameter( final String message,
+ final ParameterDescriptor expected,
+ final ParameterDescriptor actual )
+ {
+ Assert.assertEquals( message + "type",
+ expected.getType(),
+ actual.getType() );
+ assertEqualAttributes( message + ".attributes",
+ expected.getAttributes(),
+ actual.getAttributes() );
+ }
+
+ public static void assertEqualInfos( final String message,
final ComponentInfo expected,
final ComponentInfo actual )
{
@@ -98,13 +168,23 @@
Assert.assertEquals( message + ": Services.length", expected.length,
actual.length );
for( int i = 0; i < expected.length; i++ )
{
- Assert.assertEquals( message + ": Services[ " + i + "].type",
- expected[ i ].getImplementationKey(),
- actual[ i ].getImplementationKey() );
- assertEqualAttributes( message + ": Services[ " + i + "].attributes",
- expected[ i ].getAttributes(),
- actual[ i ].getAttributes() );
+ final String prefix = message + ": Services[ " + i + "]";
+ final ServiceDescriptor expectedService = expected[ i ];
+ final ServiceDescriptor actualService = actual[ i ];
+ assertEqualService( prefix, expectedService, actualService );
}
+ }
+
+ private static void assertEqualService( final String message,
+ final ServiceDescriptor expected,
+ final ServiceDescriptor actual )
+ {
+ Assert.assertEquals( message + ".type",
+ expected.getImplementationKey(),
+ actual.getImplementationKey() );
+ assertEqualAttributes( message + ".attributes",
+ expected.getAttributes(),
+ actual.getAttributes() );
}
public static void assertEqualLoggers( final String message,
1.4 +70 -12
jakarta-avalon-excalibur/info/src/test/org/apache/avalon/framework/tools/infobuilder/test/InfoBuilderTestCase.java
Index: InfoBuilderTestCase.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-excalibur/info/src/test/org/apache/avalon/framework/tools/infobuilder/test/InfoBuilderTestCase.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- InfoBuilderTestCase.java 4 Oct 2002 07:02:43 -0000 1.3
+++ InfoBuilderTestCase.java 4 Oct 2002 07:46:33 -0000 1.4
@@ -17,6 +17,8 @@
import org.apache.avalon.framework.info.EntryDescriptor;
import org.apache.avalon.framework.info.ContextDescriptor;
import org.apache.avalon.framework.info.ServiceDescriptor;
+import org.apache.avalon.framework.info.MethodDescriptor;
+import org.apache.avalon.framework.info.ParameterDescriptor;
import org.apache.avalon.framework.logger.ConsoleLogger;
import org.apache.avalon.framework.tools.infobuilder.InfoBuilder;
import java.util.Properties;
@@ -37,6 +39,8 @@
private static final String COMPONENT2 = BASE_PACKAGE + "component2";
private static final String COMPONENT3 = BASE_PACKAGE + "component3";
+ private static final String SERVICE1 = BASE_PACKAGE + "service1";
+
public InfoBuilderTestCase( String name )
{
super( name );
@@ -46,7 +50,7 @@
throws Exception
{
final ComponentInfo actual = loadComponentInfo( COMPONENT1 );
- final ComponentInfo expected = constructDummyInfo();
+ final ComponentInfo expected = createDummyComponentInfo();
InfoAssert.assertEqualInfos( COMPONENT1 + " should be equal to constructed
actual",
expected,
@@ -64,12 +68,60 @@
actual );
}
- private ComponentInfo constructDummyInfo()
+ public void testLoadXMLService1()
+ throws Exception
+ {
+ final ServiceInfo actual = loadServiceInfo( SERVICE1 );
+ final ServiceInfo expected = createDummyServiceInfo();
+
+ InfoAssert.assertEqualInfos( SERVICE1 + " should be equal to constructed
actual",
+ expected,
+ actual );
+ }
+
+ private ServiceInfo createDummyServiceInfo()
+ {
+ final ServiceDescriptor service = createServiceDescriptor();
+
+ final Properties params1 = new Properties();
+ params1.setProperty( "display-name", "Do Magic Method" );
+ params1.setProperty( "description-key", "doMagic.desc" );
+ final Attribute attribute1 = new Attribute( "doc", params1 );
+ final Attribute[] attributes1 = new Attribute[]{attribute1};
+
+ final MethodDescriptor method1 =
+ new MethodDescriptor( "doMagic",
+ "void",
+ new ParameterDescriptor[ 0 ],
+ attributes1 );
+
+ final ParameterDescriptor parameter1 =
+ new ParameterDescriptor( "java.lang.String",
InfoAssert.EMPTY_ATTRIBUTES );
+
+ final Properties params2 = new Properties();
+ params2.setProperty( "display-name", "The secret Parameter" );
+ params2.setProperty( "description-key", "doMagic.desc" );
+ final Attribute attribute2 = new Attribute( "doc", params2 );
+ final Attribute[] attributes2 = new Attribute[]{attribute2};
+ final ParameterDescriptor parameter2 =
+ new ParameterDescriptor( "int", attributes2 );
+
+ final ParameterDescriptor[] parameters =
+ new ParameterDescriptor[]{parameter1, parameter2};
+ final MethodDescriptor method2 =
+ new MethodDescriptor( "doMoreMagic",
+ "int",
+ parameters,
+ InfoAssert.EMPTY_ATTRIBUTES );
+ final MethodDescriptor[] methods = new MethodDescriptor[]{method1, method2};
+
+ return new ServiceInfo( service, methods );
+ }
+
+ private ComponentInfo createDummyComponentInfo()
{
final ComponentDescriptor component =
- new ComponentDescriptor(
- "org.realityforge.Component1",
- InfoAssert.EMPTY_ATTRIBUTES );
+ new ComponentDescriptor( "org.realityforge.Component1",
InfoAssert.EMPTY_ATTRIBUTES );
final LoggerDescriptor logger1 = new LoggerDescriptor( "",
InfoAssert.EMPTY_ATTRIBUTES );
final LoggerDescriptor logger2 = new LoggerDescriptor( "audit",
InfoAssert.EMPTY_ATTRIBUTES );
@@ -86,13 +138,8 @@
entrys,
InfoAssert.EMPTY_ATTRIBUTES );
- final Properties parameters = new Properties();
- parameters.setProperty( "display-name", "Special Service" );
- parameters.setProperty( "description-key", "service1.desc" );
- final Attribute attribute = new Attribute( "doc", parameters );
+ final ServiceDescriptor service1 = createServiceDescriptor();
- final Attribute[] attributes = new Attribute[]{attribute};
- final ServiceDescriptor service1 = new ServiceDescriptor(
"org.realityforge.Service1", attributes );
final ServiceDescriptor[] services = new ServiceDescriptor[]{service1};
final DependencyDescriptor dependency1 =
new DependencyDescriptor( "org.realityforge.Service2",
@@ -108,6 +155,17 @@
new DependencyDescriptor[]{dependency1, dependency2};
return new ComponentInfo( component, loggers, context, services, deps );
+ }
+
+ private ServiceDescriptor createServiceDescriptor()
+ {
+ final Properties parameters = new Properties();
+ parameters.setProperty( "display-name", "Special Service" );
+ parameters.setProperty( "description-key", "service1.desc" );
+ final Attribute attribute = new Attribute( "doc", parameters );
+
+ final Attribute[] attributes = new Attribute[]{attribute};
+ return new ServiceDescriptor( "org.realityforge.Service1", attributes );
}
protected ComponentInfo loadComponentInfo( final String classname )
1.1
jakarta-avalon-excalibur/info/src/test/org/apache/avalon/framework/tools/infobuilder/test/data/service1-info.xml
Index: service1-info.xml
===================================================================
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE service-info
PUBLIC "-//AVALON/Component Info DTD Version 1.0//EN"
"http://jakarta.apache.org/avalon/dtds/info/componentinfo_1_0.dtd" >
<service-info>
<service type="org.realityforge.Service1">
<attribute name="doc">
<param name="display-name" value="Special Service"/>
<param name="description-key" value="service1.desc"/>
</attribute>
</service>
<methods>
<method name="doMagic" return-type="void">
<attribute name="doc">
<param name="display-name" value="Do Magic Method"/>
<param name="description-key" value="doMagic.desc"/>
</attribute>
</method>
<method name="doMoreMagic" return-type="int">
<parameter type="java.lang.String"/>
<parameter type="int">
<attribute name="doc">
<param name="display-name" value="The secret Parameter"/>
<param name="description-key" value="doMagic.desc"/>
</attribute>
</parameter>
</method>
</methods>
</service-info>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>