KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > quilt > cl > TestClassFactory


1 /* TestClassFactory.java */
2
3 package org.quilt.cl;
4
5 import java.io.ByteArrayOutputStream JavaDoc;
6 import java.io.DataInputStream JavaDoc;
7 import java.io.File JavaDoc;
8 import java.io.IOException JavaDoc;
9 import java.io.InputStream JavaDoc;
10 import java.net.URL JavaDoc;
11 import java.net.URLClassLoader JavaDoc;
12
13 import junit.framework.TestCase;
14
15 /**
16  *
17  * @author <a HREF="ddp@apache.org">David Dixon-Peugh</a>
18  * @author <a HREF="jddixon@users.sourceforge.net">Jim Dixon</a> - mods Jul 2003
19
20  */

21 public class TestClassFactory extends TestCase {
22     private ClassLoader JavaDoc loader = new CFClassLoader();
23     private String JavaDoc name = null;
24     private RunTest tinter = null;
25     
26     public class CFClassLoader
27         extends URLClassLoader JavaDoc
28     {
29         public CFClassLoader() {
30             super(new URL JavaDoc[0], TestClassFactory.class.getClassLoader());
31         }
32         
33         public Class JavaDoc findClass( String JavaDoc className )
34             throws ClassNotFoundException JavaDoc
35         {
36             String JavaDoc classFile = className.replace('.', File.separatorChar)
37                     + ".class";
38             InputStream JavaDoc bytecodeIS = getResourceAsStream( classFile );
39             
40             byte bytecode[] = new byte[4096];
41             int len = 0;
42             try {
43                 len = bytecodeIS.read(bytecode);
44             } catch (IOException JavaDoc e) {
45                 e.printStackTrace();
46                 throw new ClassNotFoundException JavaDoc( e.getMessage() );
47             }
48             
49             Class JavaDoc RC = defineClass( className,
50                 bytecode, 0,
51                 len);
52             return RC;
53         }
54     
55     /**
56      * This is where we generate bytecode for the
57      * Instrumenting Class Loader to instrument.
58      *
59      * The resourceName looks like "test/data/TestMyStuff.class"
60      * it needs to be converted to "test.data.TestMyStuff"
61      */

62         public InputStream JavaDoc getResourceAsStream( String JavaDoc resName )
63         {
64             return ClassFactory.getInstance().getResourceAsStream( resName );
65         }
66     }
67     
68     /**
69      * Constructor for TestClassFactory.
70      * @param arg0
71      */

72     public TestClassFactory(String JavaDoc arg0) {
73         super(arg0);
74         this.name = arg0;
75     }
76
77     public void setUp() {
78         try {
79             Class JavaDoc clazz = loader.loadClass("test.data." + name);
80             tinter = (RunTest) clazz.newInstance();
81         } catch (Exception JavaDoc e) {
82             e.printStackTrace();
83         }
84     }
85     
86     public void testDefault()
87     {
88         assertEquals( 2, tinter.runTest( 5 ) );
89     }
90     public void testIfThen() {
91         assertEquals( 3, tinter.runTest( 5 ) );
92         assertEquals( 5, tinter.runTest( -1 ) );
93     }
94
95     public void testSelect() {
96         assertEquals( 2, tinter.runTest( 0 ) );
97         assertEquals( 1, tinter.runTest( 1 ) );
98         assertEquals( 3, tinter.runTest( 2 ) );
99         assertEquals( 5, tinter.runTest( 3 ) );
100         assertEquals( 2, tinter.runTest( 4 ) );
101     }
102    
103     public void testWhile() {
104         assertEquals( 0, tinter.runTest( 0 ) );
105         assertEquals( -1, tinter.runTest( -1 ));
106         assertEquals( 0, tinter.runTest( 1 ) );
107         assertEquals( 0, tinter.runTest( 5 ) );
108     }
109
110     public void testNPENoCatch() {
111         try {
112             tinter.runTest( 0 );
113             fail("Expecting Null Pointer Exception.");
114         } catch (NullPointerException JavaDoc npe) { }
115     }
116
117     public void testNPEWithCatch() {
118         int retValue = 0;
119         try {
120             retValue = tinter.runTest( 0 );
121         } catch (NullPointerException JavaDoc npe) {
122             fail ("Unexpected null pointer exception");
123         }
124         assertEquals ( "NPEWithCatch did not handle the exception",
125                 3, retValue);
126     }
127 }
128
Popular Tags