You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by le...@apache.org on 2004/09/10 22:52:45 UTC

cvs commit: jakarta-commons/attributes/unittest/src/test/org/apache/commons/attributes/test InheritableTestCase.java

leosutic    2004/09/10 13:52:45

  Added:       attributes/unittest/src/test/org/apache/commons/attributes/test
                        InheritableTestCase.java
  Log:
  Refactored test cases.
  
  Revision  Changes    Path
  1.1                  jakarta-commons/attributes/unittest/src/test/org/apache/commons/attributes/test/InheritableTestCase.java
  
  Index: InheritableTestCase.java
  ===================================================================
  /*
   * Copyright 2003-2004 The Apache Software Foundation
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *     http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.commons.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 java.util.Collection;
  import java.util.Iterator;
  import org.apache.commons.attributes.Attributes;
  import org.apache.commons.attributes.AttributeIndex;
  import junit.framework.TestCase;
  
  public class InheritableTestCase extends TestCase {
      
      public static interface SampleService {}
      
      /**
       * @@InheritableTestCase.InheritableAttribute ("super-sample")
       */
      public static class SuperClass {
          
          /**
           * @@InheritableTestCase.NonInheritableAttribute ()
           * @@InheritableTestCase.InheritableAttribute ( "super-field" )
           */
          public Object field;
          
          /**
           * @@InheritableTestCase.InheritableAttribute ( "super-noattrs" )
           */
          public Object noAttributesInSubClass;
          
          /**
           * @@InheritableTestCase.InheritableAttribute ( "sample-ctor1" )
           */
          public SuperClass () {
              
          }
          
          /**
           * @@InheritableTestCase.InheritableAttribute( "sample-ctor2" )
           * @@.array InheritableTestCase.NonInheritableAttribute()
           */
          public SuperClass (String input, String[][] array) {
              
          }
          
          /**
           * @@InheritableTestCase.InheritableAttribute( "super-some-method-sample" )
           * @@InheritableTestCase.NonInheritableAttribute()
           */
          public void someMethod (int parameter) {
              
          }
          
          /**
           * @@InheritableTestCase.InheritableAttribute( "super-privateMethod" )
           */
          private void privateMethod () {
              
          }
          
      }
      
      public static interface JoinedInterface extends InterfaceOne, InterfaceTwo {
      }
      
      /**
       * @@InheritableTestCase.InheritableAttribute( "sample-if-2-c" )
       */
      public static interface InterfaceTwo {
          
          /**
           * @@InheritableTestCase.InheritableAttribute( "sample-if-2" )
           * @@InheritableTestCase.NonInheritableAttribute()
           */
          public void someMethod (int parameter);
      }
      
      /**
       * @@InheritableTestCase.InheritableAttribute( "sample-if-1-c" )
       */
      public static interface InterfaceOne {
          
          /**
           * @@InheritableTestCase.InheritableAttribute( "sample-if-1" )
           * @@InheritableTestCase.NonInheritableAttribute()
           */
          public void someMethod (int parameter);
          
          /**
           * @@.return InheritableTestCase.InheritableAttribute("sample-if-return" )
           * @@.param2 InheritableTestCase.InheritableAttribute("sample-if-param-2" )
           */
          public Integer methodWithAttributes (int param1, int param2);
      }
      
      /**
       * @@org.apache.commons.attributes.Inheritable()
       */
      public static class InheritableAttribute {
          private final String name;
          public InheritableAttribute(String name) { this.name = name; }
          public String getInheritableAttributeName () { return name; }
          
          public boolean equals (Object o) {
              return o instanceof InheritableAttribute &&
                  ((InheritableAttribute) o).name.equals (name);
          }
          public int hashCode () { return name.hashCode (); }
          public String toString () { return "[InheritableAttribute \"" + name + "\"]"; }
      }
      
      public static class NonInheritableAttribute {
          public NonInheritableAttribute() {}
          public boolean equals (Object o) { return o instanceof NonInheritableAttribute; }
          public int hashCode () { return 0; }
          public String toString () { return "[NonInheritableAttribute]"; }
      }
      
      /** @@InheritableTestCase.NonInheritableAttribute()
       * @@InheritableTestCase.InheritableAttribute( "sample" ) */
      public static class Sample extends InheritableTestCase.SuperClass implements JoinedInterface {
          /** @@InheritableTestCase.NonInheritableAttribute() */
          public Object field;
          public Object noAttributesInSubClass;        
          /** @@InheritableTestCase.InheritableAttribute( "sample-some-method1" ) */
          public void someMethod () {}        
          /** @@InheritableTestCase.InheritableAttribute( "sample-some-method2" ) */
          public void someMethod (int parameter) {}        
          /** @@.param2 InheritableTestCase.NonInheritableAttribute ()
           * @@.return InheritableTestCase.InheritableAttribute("sample-return") */
          public Integer methodWithAttributes (int param1, int param2) { return null; }
          public void methodWithNoAttributes () {}
          /** @@InheritableTestCase.InheritableAttribute( "inner-sample" ) */
          public static class InnerSample {}
          /** @@InheritableTestCase.InheritableAttribute( "sample-privateMethod" ) */
          private void privateMethod () {}
      }
      
      public void testClassInheritance () throws Exception {
          Class c = Sample.class;
          assertEquals (5, Attributes.getAttributes (c).size ());
          assertEquals (4, Attributes.getAttributes (c, InheritableAttribute.class).size ());
          assertTrue (Attributes.hasAttributeType (c, InheritableAttribute.class));
          assertTrue (Attributes.hasAttributeType (c, NonInheritableAttribute.class));
          assertTrue (Attributes.hasAttribute (c, new InheritableAttribute( "sample" )));
          assertTrue (Attributes.hasAttribute (c, new InheritableAttribute( "super-sample" )));
          assertTrue (Attributes.hasAttribute (c, new InheritableAttribute( "sample-if-1-c" )));
          assertTrue (Attributes.hasAttribute (c, new InheritableAttribute( "sample-if-2-c" )));
          assertTrue (Attributes.hasAttribute (c, new NonInheritableAttribute()));
      }
      
      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, InheritableAttribute.class).size ());
          assertTrue (Attributes.hasAttributeType (m, InheritableAttribute.class));
          assertTrue (Attributes.hasAttribute (m, new InheritableAttribute( "super-some-method-sample" )));
          assertTrue (Attributes.hasAttribute (m, new InheritableAttribute( "sample-some-method2" ) ));
          assertTrue (Attributes.hasAttribute (m, new InheritableAttribute( "sample-if-1" ) ));
          assertTrue (Attributes.hasAttribute (m, new InheritableAttribute( "sample-if-2" ) ));
      }
      
      public void testPrivateMethodNonInheritance () throws Exception {
          Method m = Sample.class.getDeclaredMethod ("privateMethod", new Class[]{});
          assertEquals (1, Attributes.getAttributes (m).size ());
          assertEquals (1, Attributes.getAttributes (m, InheritableAttribute.class).size ());
          assertTrue (Attributes.hasAttributeType (m, InheritableAttribute.class));
          assertTrue (Attributes.hasAttribute (m, new InheritableAttribute( "sample-privateMethod" ) ));
          
          m = SuperClass.class.getDeclaredMethod ("privateMethod", new Class[]{});
          assertEquals (1, Attributes.getAttributes (m).size ());
          assertEquals (1, Attributes.getAttributes (m, InheritableAttribute.class).size ());
          assertTrue (Attributes.hasAttributeType (m, InheritableAttribute.class));
          assertTrue (Attributes.hasAttribute (m, new InheritableAttribute( "super-privateMethod" ) ));
      }
      
      public void testFieldNonInheritance () throws Exception {
          Field f = SuperClass.class.getField ("field");
          assertEquals (2, Attributes.getAttributes (f).size ());
          assertEquals (1, Attributes.getAttributes (f, NonInheritableAttribute.class).size ());
          assertEquals (1, Attributes.getAttributes (f, InheritableAttribute.class).size ());
          assertTrue (Attributes.hasAttributeType (f, NonInheritableAttribute.class));
          assertTrue (Attributes.hasAttributeType (f, InheritableAttribute.class));
          assertTrue (Attributes.hasAttribute (f, new NonInheritableAttribute()));
          assertTrue (Attributes.hasAttribute (f, new InheritableAttribute( "super-field" )));
          
          f = Sample.class.getField ("field");
          assertEquals (1, Attributes.getAttributes (f).size ());
          assertEquals (1, Attributes.getAttributes (f, NonInheritableAttribute.class).size ());
          assertTrue (Attributes.hasAttributeType (f, NonInheritableAttribute.class));
          assertTrue (Attributes.hasAttribute (f, new NonInheritableAttribute()));
          
          f = SuperClass.class.getField ("noAttributesInSubClass");
          assertEquals (1, Attributes.getAttributes (f).size ());
          assertEquals (1, Attributes.getAttributes (f, InheritableAttribute.class).size ());
          assertTrue (Attributes.hasAttribute (f, new InheritableAttribute( "super-noattrs" )));
          assertTrue (Attributes.hasAttributeType (f, InheritableAttribute.class));
          
          f = Sample.class.getField ("noAttributesInSubClass");
          assertEquals (0, Attributes.getAttributes (f).size ());
          assertEquals (0, Attributes.getAttributes (f, InheritableAttribute.class).size ());
          assertTrue (!Attributes.hasAttribute (f, new InheritableAttribute( "super-noattrs" )));
          assertTrue (!Attributes.hasAttributeType (f, InheritableAttribute.class));
      }
  }
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org