1 /* TestQCLJars.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 * At the moment this is identical to TestQuiltClassLoader except that 12 * test-data.jar is on the classpath and test-data-classes/ is not. 13 * 14 * @author <a href="jddixon@users.sourceforge.net">Jim Dixon</a> 15 */ 16 public class TestQCLJars extends TestCase { 17 18 private URL [] cp = null; 19 20 private String[] delegating = { 21 // EMPTY -- nothing additional to defaults 22 }; 23 private String[] include = { 24 // EMPTY -- nothing being instrumented 25 }; 26 private String[] exclude = { 27 "AnonymousClass", "AnonymousClass2Catches", 28 "InnerClass", "NestedTryBlocks", 29 "PrivateClass", "SuperClass", 30 "Wimple" 31 }; 32 private QuiltClassLoader qLoader = null; 33 34 public TestQCLJars (String name) { 35 super(name); 36 } 37 38 public void setUp () { 39 // TAKE CARE NO TERMINATING SLASH (/) ON THE JAR 40 File sam1 = new File ("target/test-data.jar"); 41 String fullPath1 = sam1.getAbsolutePath(); 42 43 File sam2 = new File ("target/classes"); 44 String fullPath2 = sam2.getAbsolutePath() + "/"; 45 File sam3 = new File ("target/test-classes"); 46 String fullPath3 = sam3.getAbsolutePath() + "/"; 47 try { 48 // Terminating slash is required. Relative paths don't 49 // work. 50 URL [] samples = { 51 new URL ( "file://" + fullPath1), 52 new URL ( "file://" + fullPath2), 53 new URL ( "file://" + fullPath3) 54 }; 55 cp = samples; 56 } catch (MalformedURLException e) { 57 e.printStackTrace(); 58 fail ("problem creating class path"); 59 } 60 qLoader = new QuiltClassLoader( 61 cp, 62 null, // parent 63 delegating, // delegated classes 64 include, // being instrumented 65 exclude); // do NOT instrument 66 } 67 ///////////////////////////////////////////////////////////////// 68 // AnonymousClass comes from test-data.jar, as does BasicLoad, 69 // used in testInvokeTestData 70 // ////////////////////////////////////////////////////////////// 71 public void testLoader() { 72 Class a1 = null; 73 Class a2 = null; 74 try { 75 a1 = qLoader.loadClass("AnonymousClass"); 76 } catch (ClassNotFoundException e) { 77 e.printStackTrace(); 78 fail ("Error loading AnonymousClass using loadClass"); 79 } 80 try { 81 a2 = qLoader.loadClass("AnonymousClass"); 82 } catch (ClassNotFoundException e) { 83 fail ("Error loading AnonymousClass using loadClass"); 84 } 85 assertNotNull("qLoader returned null", a1); 86 assertNotNull("qLoader returned null", a2); 87 assertEquals ("second load returned a different class", 88 (Object)a1, (Object)a2); 89 } 90 91 public void testInvokeTestData() { 92 Class a1 = null; 93 Class a2 = null; 94 try { 95 a1 = qLoader.loadClass("AnonymousClass"); 96 } catch (ClassNotFoundException e) { 97 e.printStackTrace(); 98 fail ("Error loading AnonymousClass using loadClass"); 99 } 100 try { 101 a2 = qLoader.loadClass("BasicLoad"); 102 } catch (ClassNotFoundException e) { 103 fail ("Error loading BasicLoad using loadClass"); 104 } 105 RunTest rt = null; 106 // exercise AnonymousClass //////////////////////// 107 try { 108 rt = (RunTest) a1.newInstance(); 109 } catch ( InstantiationException e ) { 110 fail ("error instantiating loaded AnonymousClass"); 111 } catch ( IllegalAccessException e ) { 112 fail ("error instantiating loaded AnonymousClass"); 113 } 114 // AnonymousClass.runTest(x) returns x 115 assertEquals ("AnonymousClass isn't working", 47, rt.runTest(47)); 116 117 // exercise BasicLoad //////////////////////// 118 try { 119 rt = (RunTest) a2.newInstance(); 120 } catch ( InstantiationException e ) { 121 fail ("error instantiating loaded BasicLoad"); 122 } catch ( IllegalAccessException e ) { 123 fail ("error instantiating loaded BasicLoad"); 124 } 125 // BasicLoad.runTest(x) returns x*x 126 assertEquals ("BasicLoad isn't working", 49, rt.runTest(7)); 127 } 128 }

This page was automatically generated by Maven