You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bo...@locus.apache.org on 2000/07/11 16:15:31 UTC

cvs commit: jakarta-ant/src/testcases/org/apache/tools/ant IntrospectionHelperTest.java

bodewig     00/07/11 07:15:30

  Modified:    .        build.xml
  Added:       src/testcases/org/apache/tools/ant
                        IntrospectionHelperTest.java
  Log:
  Added a JUnit unit test for IntrospectionHelper.
  
  Revision  Changes    Path
  1.32      +31 -0     jakarta-ant/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/build.xml,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- build.xml	2000/07/05 15:35:37	1.31
  +++ build.xml	2000/07/11 14:15:26	1.32
  @@ -13,12 +13,14 @@
     <property name="ant.home" value="."/>
     <property name="src.bin.dir" value="src/bin"/>
     <property name="src.dir" value="src/main"/>
  +  <property name="src.tests.dir" value="src/testcases"/>
     <property name="docs.dir" value="docs"/>
     <property name="build.dir" value="../build/ant"/>
     <property name="lib.dir" value="${build.dir}/lib"/>
     <property name="bin.dir" value="${build.dir}/bin"/>
     <property name="build.classes" value="${build.dir}/classes"/>
     <property name="build.javadocs" value="${build.dir}/javadocs"/>
  +  <property name="build.tests" value="${build.dir}/testcases"/>
     <property name="ant.dist.dir" value="../dist/ant"/>
   
     <property name="classpath" value=""/>
  @@ -44,6 +46,7 @@
       <available property="ejb.ejbc.present" classname="weblogic.ejbc" />
       <available property="ejb.DDCreator.present" classname="weblogic.ejb.utils.DDCreator" />
       <available property="ejb.wls.present" classname="weblogic.Server" />
  +    <available property="junit.present" classname="junit.framework.TestCase" />
     </target>
   
     <!-- =================================================================== -->
  @@ -216,6 +219,34 @@
            package="jakarta-ant"
            dest="."  />
       <zip zipfile="/www/jakarta.apache.org/builds/tmp/ant/ant.src.zip" basedir="." includes="jakarta-ant/**"/>
  +  </target>
  +
  +  <!-- =================================================================== -->
  +  <!-- Compile testcases                                                   -->
  +  <!-- =================================================================== -->
  +  <target name="compiletests" depends="jar">
  +    <mkdir dir="${build.tests}"/>
  +
  +    <javac srcdir="${src.tests.dir}"
  +           destdir="${build.tests}"
  +           classpath="${lib.dir}/${name}.jar:${classpath}"
  +           debug="on"
  +           deprecation="off"
  +           optimize="on" >
  +      <include name="**/*.java"/>
  +      <exclude name="**/IntrospectionHelperTest.java" unless="junit.present" />
  +    </javac>
  +   </target>
  +
  +  <!-- =================================================================== -->
  +  <!-- Run testcase                                                        -->
  +  <!-- =================================================================== -->
  +  <target name="runtests" depends="compiletests" if="junit.present">
  +    <java fork="yes"
  +          classname="junit.textui.TestRunner"
  +          args="org.apache.tools.ant.IntrospectionHelperTest"
  +          classpath="${lib.dir}/${name}.jar:${build.tests}:${classpath}:${java.class.path}"
  +    />
     </target>
   
   </project>
  
  
  
  1.1                  jakarta-ant/src/testcases/org/apache/tools/ant/IntrospectionHelperTest.java
  
  Index: IntrospectionHelperTest.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2000 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  package org.apache.tools.ant;
  
  import junit.framework.TestCase;
  import junit.framework.AssertionFailedError;
  import java.io.File;
  import java.util.*;
  
  /**
   * JUnit 3 testcases for org.apache.tools.ant.IntrospectionHelper.
   *
   * @author Stefan Bodewig <a href="mailto:stefan.bodewig@megabit.net">stefan.bodewig@megabit.net</a> 
   */
  
  public class IntrospectionHelperTest extends TestCase {
  
      public IntrospectionHelperTest(String name) {
          super(name);
      }
      
      public void testAddText() throws BuildException {
          IntrospectionHelper ih = IntrospectionHelper.getHelper(java.lang.String.class);
          try {
              ih.addText("", "test");
              fail("String doesn\'t support addText");
          } catch (BuildException be) {
          }
  
          ih = IntrospectionHelper.getHelper(getClass());
          ih.addText(this, "test");
          try {
              ih.addText(this, "test2");
              fail("test2 shouldn\'t be equal to test");
          } catch (BuildException be) {
              assert(be.getException() instanceof AssertionFailedError);
          }
      }
  
      public void testSupportsCharacters() {
          IntrospectionHelper ih = IntrospectionHelper.getHelper(java.lang.String.class);
          assert("String doesn\'t support addText", !ih.supportsCharacters());
          ih = IntrospectionHelper.getHelper(getClass());
          assert("IntrospectionHelperTest supports addText", 
                 ih.supportsCharacters());
      }
  
      public void addText(String text) {
          assertEquals("test", text);
      }
      
      public void testElementCreators() throws BuildException {
          IntrospectionHelper ih = IntrospectionHelper.getHelper(getClass());
          try {
              ih.getElementType("one");
              fail("don't have element type one");
          } catch (BuildException be) {
          }
          try {
              ih.getElementType("two");
              fail("createTwo takes arguments");
          } catch (BuildException be) {
          }
          try {
              ih.getElementType("three");
              fail("createThree returns void");
          } catch (BuildException be) {
          }
          try {
              ih.getElementType("four");
              fail("createFour returns array");
          } catch (BuildException be) {
          }
          try {
              ih.getElementType("five");
              fail("createFive returns primitive type");
          } catch (BuildException be) {
          }
          assertEquals(java.lang.String.class, ih.getElementType("six"));
          assertEquals("test", ih.createElement(this, "six"));
  
          try {
              ih.getElementType("seven");
              fail("addSeven takes two arguments");
          } catch (BuildException be) {
          }
          try {
              ih.getElementType("eight");
              fail("addEight takes no arguments");
          } catch (BuildException be) {
          }
          try {
              ih.getElementType("nine");
              fail("nine return non void");
          } catch (BuildException be) {
          }
          try {
              ih.getElementType("ten");
              fail("addTen takes array argument");
          } catch (BuildException be) {
          }
          try {
              ih.getElementType("eleven");
              fail("addTen takes primitive argument");
          } catch (BuildException be) {
          }
          try {
              ih.getElementType("twelve");
              fail("no primitive constructor for java.lang.Class");
          } catch (BuildException be) {
          }
          assertEquals(java.lang.StringBuffer.class, ih.getElementType("thirteen"));
          assertEquals("test", ih.createElement(this, "thirteen").toString());
  
          try {
              ih.createElement(this, "fourteen");
              fail("fourteen throws NullPointerException");
          } catch (BuildException be) {
              assert(be.getException() instanceof NullPointerException);
          }
  
          try {
              ih.createElement(this, "fourteen");
              fail("fifteen throws NullPointerException");
          } catch (BuildException be) {
              assert(be.getException() instanceof NullPointerException);
          }
      }
      
      public void testGetNestedElements() {
          Hashtable h = new Hashtable();
          h.put("six", java.lang.String.class);
          h.put("thirteen", java.lang.StringBuffer.class);
          h.put("fourteen", java.lang.String.class);
          h.put("fifteen", java.lang.String.class);
          IntrospectionHelper ih = IntrospectionHelper.getHelper(getClass());
          Enumeration enum = ih.getNestedElements();
          while (enum.hasMoreElements()) {
              String name = (String) enum.nextElement();
              Class expect = (Class) h.get(name);
              assertNotNull("Support for "+name+" in IntrospectioNHelperTest?",
                            expect);
              assertEquals("Return type of "+name, expect, ih.getElementType(name));
              h.remove(name);
          }
          assert("Found all", h.isEmpty());
      }
  
      public Object createTwo(String s) {
          return null;
      }
  
      public void createThree() {}
  
      public Object[] createFour() {
          return null;
      }
  
      public int createFive() {
          return 0;
      }
  
      public String createSix() {
          return "test";
      }
  
      public String createFifteen() {
          throw new NullPointerException();
      }
  
      public void addSeven(String s, String s2) {}
  
      public void addEight() {}
  
      public String addNine(String s) {
          return null;
      }
  
      public void addTen(String[] s) {}
  
      public void addEleven(int i) {}
  
      public void addTwelve(Class c) {}
  
      public void addThirteen(StringBuffer sb) {
          sb.append("test");
      }
      
      public void addFourteen(String s) {
          throw new NullPointerException();
      }
  
      public void testAttributeSetters() throws BuildException {
          Project p = new Project();
          p.setBasedir("/tmp");
          IntrospectionHelper ih = IntrospectionHelper.getHelper(getClass());
          try {
              ih.setAttribute(p, this, "one", "test");
              fail("setOne doesn't exist");
          } catch (BuildException be) {
          }
          try {
              ih.setAttribute(p, this, "two", "test");
              fail("setTwo returns non void");
          } catch (BuildException be) {
          }
          try {
              ih.setAttribute(p, this, "three", "test");
              fail("setThree takes no args");
          } catch (BuildException be) {
          }
          try {
              ih.setAttribute(p, this, "four", "test");
              fail("setFour takes two args");
          } catch (BuildException be) {
          }
          try {
              ih.setAttribute(p, this, "five", "test");
              fail("setFive takes array arg");
          } catch (BuildException be) {
          }
          try {
              ih.setAttribute(p, this, "six", "test");
              fail("Project doesn't have a String constructor");
          } catch (BuildException be) {
          }
          ih.setAttribute(p, this, "seven", "2");
          try {
              ih.setAttribute(p, this, "seven", "3");
              fail("2 shouldn't be equals to three");
          } catch (BuildException be) {
              assert(be.getException() instanceof AssertionFailedError);
          }
          ih.setAttribute(p, this, "eight", "2");
          try {
              ih.setAttribute(p, this, "eight", "3");
              fail("2 shouldn't be equals to three - as int");
          } catch (BuildException be) {
              assert(be.getException() instanceof AssertionFailedError);
          }
          ih.setAttribute(p, this, "nine", "2");
          try {
              ih.setAttribute(p, this, "nine", "3");
              fail("2 shouldn't be equals to three - as Integer");
          } catch (BuildException be) {
              assert(be.getException() instanceof AssertionFailedError);
          }
          ih.setAttribute(p, this, "ten", "2");
          try {
              ih.setAttribute(p, this, "ten", "3");
              fail("/tmp/2 shouldn't be equals to /tmp/3");
          } catch (BuildException be) {
              assert(be.getException() instanceof AssertionFailedError);
          }
          ih.setAttribute(p, this, "eleven", "2");
          try {
              ih.setAttribute(p, this, "eleven", "on");
              fail("on shouldn't be false");
          } catch (BuildException be) {
              assert(be.getException() instanceof AssertionFailedError);
          }
          ih.setAttribute(p, this, "twelve", "2");
          try {
              ih.setAttribute(p, this, "twelve", "on");
              fail("on shouldn't be false");
          } catch (BuildException be) {
              assert(be.getException() instanceof AssertionFailedError);
          }
          ih.setAttribute(p, this, "thirteen", "org.apache.tools.ant.Project");
          try {
              ih.setAttribute(p, this, "thirteen", "org.apache.tools.ant.ProjectHelper");
              fail("org.apache.tools.ant.Project shouldn't be equal to org.apache.tools.ant.ProjectHelper");
          } catch (BuildException be) {
              assert(be.getException() instanceof AssertionFailedError);
          }
          try {
              ih.setAttribute(p, this, "thirteen", "org.apache.tools.ant.Project2");
              fail("org.apache.tools.ant.Project2 doesn't exist");
          } catch (BuildException be) {
              assert(be.getException() instanceof ClassNotFoundException);
          }
          ih.setAttribute(p, this, "fourteen", "2");
          try {
              ih.setAttribute(p, this, "fourteen", "on");
              fail("2 shouldn't be equals to three - as StringBuffer");
          } catch (BuildException be) {
              assert(be.getException() instanceof AssertionFailedError);
          }
          ih.setAttribute(p, this, "fifteen", "abcd");
          try {
              ih.setAttribute(p, this, "fifteen", "on");
              fail("o shouldn't be equal to a");
          } catch (BuildException be) {
              assert(be.getException() instanceof AssertionFailedError);
          }
          ih.setAttribute(p, this, "sixteen", "abcd");
          try {
              ih.setAttribute(p, this, "sixteen", "on");
              fail("o shouldn't be equal to a");
          } catch (BuildException be) {
              assert(be.getException() instanceof AssertionFailedError);
          }
      }
  
      public void testGetAttributes() {
          Hashtable h = new Hashtable();
          h.put("seven", java.lang.String.class);
          h.put("eight", java.lang.Integer.TYPE);
          h.put("nine", java.lang.Integer.class);
          h.put("ten", java.io.File.class);
          h.put("eleven", java.lang.Boolean.TYPE);
          h.put("twelve", java.lang.Boolean.class);
          h.put("thirteen", java.lang.Class.class);
          h.put("fourteen", java.lang.StringBuffer.class);
          h.put("fifteen", java.lang.Character.TYPE);
          h.put("sixteen", java.lang.Character.class);
          IntrospectionHelper ih = IntrospectionHelper.getHelper(getClass());
          Enumeration enum = ih.getAttributes();
          while (enum.hasMoreElements()) {
              String name = (String) enum.nextElement();
              Class expect = (Class) h.get(name);
              assertNotNull("Support for "+name+" in IntrospectionHelperTest?",
                            expect);
              assertEquals("Type of "+name, expect, ih.getAttributeType(name));
              h.remove(name);
          }
          assert("Found all", h.isEmpty());
      }
  
      public int setTwo(String s) {
          return 0;
      }
  
      public void setThree() {}
  
      public void setFour(String s1, String s2) {}
  
      public void setFive(String[] s) {}
  
      public void setSix(Project p) {}
  
      public void setSeven(String s) {
          assertEquals("2", s);
      }
  
      public void setEight(int i) {
          assertEquals(2, i);
      }
  
      public void setNine(Integer i) {
          assertEquals(2, i.intValue());
      }
  
      public void setTen(File f) {
          assertEquals("/tmp/2", f.getAbsolutePath());
      }
  
      public void setEleven(boolean b) {
          assert(!b);
      }
  
      public void setTwelve(Boolean b) {
          assert(!b.booleanValue());
      }
  
      public void setThirteen(Class c) {
          assertEquals(Project.class, c);
      }
  
      public void setFourteen(StringBuffer sb) {
          assertEquals("2", sb.toString());
      }
  
      public void setFifteen(char c) {
          assertEquals(c, 'a');
      }
  
      public void setSixteen(Character c) {
          assertEquals(c.charValue(), 'a');
      }
  
  }// IntrospectionHelperTest