1 /* TestNestedTryBlocks.java */
2 package org.quilt.cl;
3
4 import java.io.*;
5 import java.lang.Class;
6 import java.lang.reflect.*;
7 import java.net.*;
8 import junit.framework.*;
9
10 /***
11 * A stripped-down TestTransformer.
12 *
13 * @author <a href="jddixon@users.sourceforge.net">Jim Dixon</a>
14 */
15 public class TestNestedTryBlocks extends TestCase {
16
17 private URL [] cp = null;
18
19 private String[] delegating = {
20 // NOTHING beyond standard defaults
21 };
22 // we want everything to be instrumented
23 private String[] include = {
24 "test.data.",
25 "AnonymousClass", "AnonymousClass2Catches",
26 "BasicLoad",
27 "ExceptionLoad", "ExceptionThrow",
28 "InnerClass", "NestedTryBlocks",
29 "PrivateClass", "SuperClass",
30 "Wimple"
31 };
32 private String[] exclude = {
33 // NOTHING
34 };
35 private QuiltClassLoader qLoader = null;
36
37 private GraphXformer spy;
38 private GraphXformer talker;
39 public TestNestedTryBlocks (String name) {
40 super(name);
41 }
42
43 public void setUp () {
44 File sam1 = new File ("target/test-data-classes/");
45 String fullPath1 = sam1.getAbsolutePath() + "/";
46 File sam2 = new File ("target/classes");
47 String fullPath2 = sam2.getAbsolutePath() + "/";
48 File sam3 = new File ("target/test-classes");
49 String fullPath3 = sam3.getAbsolutePath() + "/";
50 try {
51 // Terminating slash is required. Relative paths don't
52 // work.
53 URL [] samples = {
54 new URL ( "file://" + fullPath1),
55 new URL ( "file://" + fullPath2),
56 new URL ( "file://" + fullPath3)
57 };
58 cp = samples;
59 } catch (MalformedURLException e) {
60 e.printStackTrace();
61 fail ("problem creating class path");
62 }
63 qLoader = new QuiltClassLoader(
64 cp,
65 null, // parent
66 delegating, // delegated classes
67 include, // being instrumented
68 exclude); // do NOT instrument
69 spy = new GraphSpy();
70 qLoader.addGraphXformer(spy);
71 talker = new GraphTalker();
72 qLoader.addGraphXformer(talker);
73 }
74
75 private RunTest loadAsRunTest (String name) {
76 Class clazz = null;
77 try {
78 clazz = qLoader.loadClass(name);
79 } catch (ClassNotFoundException e) {
80 e.printStackTrace();
81 fail ("exception loading " + name + " using loadClass");
82 }
83 RunTest rt = null;
84 try {
85 rt = (RunTest) clazz.newInstance();
86 } catch ( InstantiationException e ) {
87 fail ("InstantiationException instantiating loaded class " + name);
88 } catch ( IllegalAccessException e ) {
89 fail ("IllegalAccessException instantiating loaded class " + name);
90 } catch (ClassCastException e) {
91 fail ("ClassCastException instantiating loaded class " + name);
92 }
93 return rt;
94 }
95 public void testNestedTries() {
96 RunTest rt = loadAsRunTest("NestedTryBlocks");
97 assertEquals ("NestedTryBlocks isn't working", 22, rt.runTest(7));
98 }
99
100 }
This page was automatically generated by Maven