1 32 33 package com.jeantessier.classreader; 34 35 import java.io.*; 36 import java.util.*; 37 38 import junit.framework.*; 39 40 import org.apache.log4j.*; 41 42 public class TestSymbolGatherer extends TestCase { 43 public static final String TEST_CLASS = "test"; 44 public static final String TEST_FILENAME = "classes" + File.separator + "test.class"; 45 46 private SymbolGatherer gatherer; 47 private ClassfileLoader loader; 48 49 protected void setUp() throws Exception { 50 super.setUp(); 51 52 gatherer = new SymbolGatherer(); 53 loader = new AggregatingClassfileLoader(); 54 loader.addLoadListener(new LoadListenerVisitorAdapter(gatherer)); 55 } 56 57 public void testEmpty() { 58 assertEquals("Different number of symbols", 0, gatherer.getCollection().size()); 59 } 60 61 public void testOnOneClass() throws IOException { 62 loader.load(Collections.singleton(TEST_FILENAME)); 63 64 assertTrue("Missing test class name from " + gatherer.getCollection(), gatherer.getCollection().contains("test")); 65 assertTrue("Missing test.main() method from " + gatherer.getCollection(), gatherer.getCollection().contains("test.main(java.lang.String[])")); 66 assertTrue("Missing args parameter from " + gatherer.getCollection(), gatherer.getCollection().contains("test.main(java.lang.String[]): args")); 67 assertTrue("Missing c local variable from " + gatherer.getCollection(), gatherer.getCollection().contains("test.main(java.lang.String[]): c")); 68 assertTrue("Missing ex local variable from " + gatherer.getCollection(), gatherer.getCollection().contains("test.main(java.lang.String[]): ex")); 69 assertTrue("Missing test.test() method from " + gatherer.getCollection(), gatherer.getCollection().contains("test.test()")); 70 assertTrue("Missing this parameter from " + gatherer.getCollection(), gatherer.getCollection().contains("test.test(): this")); 71 assertEquals("Different number of symbols in " + gatherer.getCollection(), 7, gatherer.getCollection().size()); 72 } 73 74 public void testClassNamesOnly() throws IOException { 75 gatherer.setCollectingClassNames(true); 76 gatherer.setCollectingFieldNames(false); 77 gatherer.setCollectingMethodNames(false); 78 gatherer.setCollectingLocalNames(false); 79 80 loader.load(Collections.singleton(TEST_FILENAME)); 81 82 assertTrue("Missing test class name from " + gatherer.getCollection(), gatherer.getCollection().contains("test")); 83 assertEquals("Different number of symbols in " + gatherer.getCollection(), 1, gatherer.getCollection().size()); 84 } 85 86 public void testMethodNamesOnly() throws IOException { 87 gatherer.setCollectingClassNames(false); 88 gatherer.setCollectingFieldNames(false); 89 gatherer.setCollectingMethodNames(true); 90 gatherer.setCollectingLocalNames(false); 91 92 loader.load(Collections.singleton(TEST_FILENAME)); 93 94 assertTrue("Missing test.main() method from " + gatherer.getCollection(), gatherer.getCollection().contains("test.main(java.lang.String[])")); 95 assertTrue("Missing test.test() method from " + gatherer.getCollection(), gatherer.getCollection().contains("test.test()")); 96 assertEquals("Different number of symbols in " + gatherer.getCollection(), 2, gatherer.getCollection().size()); 97 } 98 99 public void testLocalNamesOnly() throws IOException { 100 gatherer.setCollectingClassNames(false); 101 gatherer.setCollectingFieldNames(false); 102 gatherer.setCollectingMethodNames(false); 103 gatherer.setCollectingLocalNames(true); 104 105 loader.load(Collections.singleton(TEST_FILENAME)); 106 107 assertTrue("Missing args parameter from " + gatherer.getCollection(), gatherer.getCollection().contains("test.main(java.lang.String[]): args")); 108 assertTrue("Missing c local variable from " + gatherer.getCollection(), gatherer.getCollection().contains("test.main(java.lang.String[]): c")); 109 assertTrue("Missing ex local variable from " + gatherer.getCollection(), gatherer.getCollection().contains("test.main(java.lang.String[]): ex")); 110 assertTrue("Missing this parameter from " + gatherer.getCollection(), gatherer.getCollection().contains("test.test(): this")); 111 assertEquals("Different number of symbols in " + gatherer.getCollection(), 4, gatherer.getCollection().size()); 112 } 113 } 114 | Popular Tags |