leosutic    2003/08/14 15:09:27

  Added:       attributes/unittest/src/test/org/apache/avalon/attributes/test
                        AttributesTestCase.java
  Log:
  Moved the unit tests into a separate project to get away from some really
  ugly dependencies. (API being dependent test-wise on Compiler, and
  Compiler being dependent on API biuld-wise)
  
  Revision  Changes    Path
  1.1                  
avalon-sandbox/attributes/unittest/src/test/org/apache/avalon/attributes/test/AttributesTestCase.java
  
  Index: AttributesTestCase.java
  ===================================================================
  package org.apache.avalon.attributes.test;
  
  import java.lang.reflect.Field;
  import java.lang.reflect.Method;
  import java.lang.reflect.Constructor;
  import java.io.File;
  import java.net.URL;
  import java.net.URLClassLoader;
  import org.apache.avalon.attributes.Attributes;
  import org.apache.avalon.attributes.AttributeIndex;
  import junit.framework.TestCase;
  
  public class AttributesTestCase extends TestCase {
      
      public void testClassAttributes () throws Exception {
          
          /**
           * @Dependency ( SampleService.class, "super-sample" )
           */
          Class c = SuperSample.class;
          assertEquals (1, Attributes.getAttributes (c).size ());
          assertEquals (1, Attributes.getAttributes (c, Dependency.class).size ());
          assertTrue (Attributes.hasAttributeType (c, Dependency.class));
          assertTrue (Attributes.hasAttribute (c, new Dependency ( 
SampleService.class, "super-sample" )));
      }
          
      public void testMethodAttributes () throws Exception {
          /**
           * @Dependency ( SampleService.class, "super-some-method-sample" )
           * @ThreadSafe ()
           */
          Method m = SuperSample.class.getMethod ("someMethod", new Class[]{ 
Integer.TYPE });
          assertEquals (2, Attributes.getAttributes (m).size ());
          assertEquals (1, Attributes.getAttributes (m, Dependency.class).size ());
          assertEquals (1, Attributes.getAttributes (m, ThreadSafe.class).size ());
          assertTrue (Attributes.hasAttributeType (m, Dependency.class));
          assertTrue (Attributes.hasAttributeType (m, ThreadSafe.class));
          assertTrue (Attributes.hasAttribute (m, new Dependency ( 
SampleService.class, "super-some-method-sample" )));
          assertTrue (Attributes.hasAttribute (m, new ThreadSafe ()));
      }
          
      public void testFieldAttributes () throws Exception {
          /**
           * @ThreadSafe ()
           * @Dependency ( SampleService.class, "super-field" )
           */
          Field f = SuperSample.class.getField ("field");
          assertEquals (2, Attributes.getAttributes (f).size ());
          assertEquals (1, Attributes.getAttributes (f, ThreadSafe.class).size ());
          assertEquals (1, Attributes.getAttributes (f, Dependency.class).size ());
          assertTrue (Attributes.hasAttribute (f, new ThreadSafe ()));
          assertTrue (Attributes.hasAttribute (f, new Dependency ( 
SampleService.class, "super-field" ) ));
          assertTrue (Attributes.hasAttributeType (f, ThreadSafe.class));
          assertTrue (Attributes.hasAttributeType (f, Dependency.class));
      }
      
      public void testDefaultConstructorAttributes () throws Exception {
          /**
           * @Dependency ( SampleService.class, "sample-ctor1" )
           */
          Constructor c = SuperSample.class.getDeclaredConstructor (new Class[0]);
          assertEquals (1, Attributes.getAttributes (c).size ());
          assertEquals (1, Attributes.getAttributes (c, Dependency.class).size ());
          assertTrue (Attributes.hasAttributeType (c, Dependency.class));
          assertTrue (Attributes.hasAttribute (c, new Dependency ( 
SampleService.class, "sample-ctor1" )));
      }
      
      public void testConstructorAttributes () throws Exception {
          /**
           * @Dependency ( SampleService.class, "sample-ctor2" )
           */
          Constructor c = SuperSample.class.getDeclaredConstructor (new Class[]{ 
String.class, (new String[0][0]).getClass () } );
          assertEquals (1, Attributes.getAttributes (c).size ());
          assertEquals (1, Attributes.getAttributes (c, Dependency.class).size ());
          assertTrue (Attributes.hasAttributeType (c, Dependency.class));
          assertTrue (Attributes.hasAttribute (c, new Dependency ( 
SampleService.class, "sample-ctor2" )));
      }
      
      public void testClassInheritance () throws Exception {
          Class c = Sample.class;
          assertEquals (5, Attributes.getAttributes (c).size ());
          assertEquals (4, Attributes.getAttributes (c, Dependency.class).size ());
          assertTrue (Attributes.hasAttributeType (c, Dependency.class));
          assertTrue (Attributes.hasAttributeType (c, ThreadSafe.class));
          assertTrue (Attributes.hasAttribute (c, new Dependency ( 
SampleService.class, "sample" )));
          assertTrue (Attributes.hasAttribute (c, new Dependency ( 
SampleService.class, "super-sample" )));
          assertTrue (Attributes.hasAttribute (c, new Dependency ( 
SampleService.class, "sample-if-1-c" )));
          assertTrue (Attributes.hasAttribute (c, new Dependency ( 
SampleService.class, "sample-if-2-c" )));
          assertTrue (Attributes.hasAttribute (c, new ThreadSafe ()));
      }
      
      public void testMethodInheritance () throws Exception {
          Method m = Sample.class.getMethod ("someMethod", new Class[]{ Integer.TYPE 
});
          assertEquals (4, Attributes.getAttributes (m).size ());
          assertEquals (4, Attributes.getAttributes (m, Dependency.class).size ());
          assertTrue (Attributes.hasAttributeType (m, Dependency.class));
          assertTrue (Attributes.hasAttribute (m, new Dependency ( 
SampleService.class, "super-some-method-sample" )));
          assertTrue (Attributes.hasAttribute (m, new Dependency ( 
SampleService.class, "sample-some-method2" ) ));
          assertTrue (Attributes.hasAttribute (m, new Dependency ( 
SampleService.class, "sample-if-1" ) ));
          assertTrue (Attributes.hasAttribute (m, new Dependency ( 
SampleService.class, "sample-if-2" ) ));
      }
      
      public void testFieldNonInheritance () throws Exception {
          Field f = SuperSample.class.getField ("field");
          assertEquals (2, Attributes.getAttributes (f).size ());
          assertEquals (1, Attributes.getAttributes (f, ThreadSafe.class).size ());
          assertEquals (1, Attributes.getAttributes (f, Dependency.class).size ());
          assertTrue (Attributes.hasAttributeType (f, ThreadSafe.class));
          assertTrue (Attributes.hasAttributeType (f, Dependency.class));
          assertTrue (Attributes.hasAttribute (f, new ThreadSafe ()));
          assertTrue (Attributes.hasAttribute (f, new Dependency ( 
SampleService.class, "super-field" )));
          
          f = Sample.class.getField ("field");
          assertEquals (1, Attributes.getAttributes (f).size ());
          assertEquals (1, Attributes.getAttributes (f, ThreadSafe.class).size ());
          assertTrue (Attributes.hasAttributeType (f, ThreadSafe.class));
          assertTrue (Attributes.hasAttribute (f, new ThreadSafe ()));
                  
          f = SuperSample.class.getField ("noAttributesInSubClass");
          assertEquals (1, Attributes.getAttributes (f).size ());
          assertEquals (1, Attributes.getAttributes (f, Dependency.class).size ());
          assertTrue (Attributes.hasAttribute (f, new Dependency ( 
SampleService.class, "super-noattrs" )));
          assertTrue (Attributes.hasAttributeType (f, Dependency.class));
          
          f = Sample.class.getField ("noAttributesInSubClass");
          assertEquals (0, Attributes.getAttributes (f).size ());
          assertEquals (0, Attributes.getAttributes (f, Dependency.class).size ());
          assertTrue (!Attributes.hasAttribute (f, new Dependency ( 
SampleService.class, "super-noattrs" )));
          assertTrue (!Attributes.hasAttributeType (f, Dependency.class));
      }
      
      public void testNoAttributes () throws Exception {
          Method m = Sample.class.getMethod ("methodWithNoAttributes", new Class[0]);
          assertEquals (0, Attributes.getAttributes (m).size ());
      }
      
      /**
       * Ensure that loading a class with the same name from two different class 
loaders
       * won't mess up the attribute cache.
       */
      public void testClassLoaderKeying () throws Exception {
          URLClassLoader cl1 = new URLClassLoader (new URL[]{new File 
("api/target/cl1/").toURL ()}, getClass().getClassLoader ());
          URLClassLoader cl2 = new URLClassLoader (new URL[]{new File 
("api/target/cl2/").toURL ()}, getClass().getClassLoader ());
          
          Class cl1Class = cl1.loadClass ("TestClass");
          Class cl2Class = cl2.loadClass ("TestClass");
          
          assertEquals ("[[TestAttribute 1]]", Attributes.getAttributes 
(cl1Class).toString ());
          assertEquals ("[[TestAttribute 2]]", Attributes.getAttributes 
(cl2Class).toString ());
      }
      
      public void testAttributeIndex () throws Exception {
          URLClassLoader cl2 = new URLClassLoader (new URL[]{new File 
("unittest/target/cl2/cl2.jar").toURL ()}, getClass().getClassLoader ());
          AttributeIndex index = Attributes.getAttributeIndex (cl2);
          assertEquals ("[TestClass]", index.getClassesWithAttribute 
("TestAttribute").toString ());
      }
  }
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to