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]>

Reply via email to