001: package com.reeltwo.jumble.dependency;
002:
003: import java.io.BufferedReader;
004: import java.io.InputStreamReader;
005: import java.util.Collection;
006:
007: import com.reeltwo.jumble.util.JavaRunner;
008:
009: import junit.framework.Test;
010: import junit.framework.TestCase;
011: import junit.framework.TestSuite;
012:
013: /**
014: * Tests the DependencyExtractor
015: *
016: * @author Tin Pavlinic
017: * @version $Revision: 501 $
018: */
019: public class DependencyExtractorTest extends TestCase {
020: private DependencyExtractor mExtractor;
021:
022: public void setUp() {
023: mExtractor = new DependencyExtractor(System
024: .getProperty("java.class.path"));
025: }
026:
027: public void tearDown() {
028: mExtractor = null;
029: }
030:
031: public void testDT1() {
032: Collection classes = mExtractor.getAllDependencies(
033: "com.reeltwo.jumble.dependency.DT1", true);
034: assertEquals("experiments.JumblerExperiment", classes
035: .iterator().next());
036: assertEquals(1, classes.size());
037: }
038:
039: public void testDT2() {
040: mExtractor.setClassName("com.reeltwo.jumble.dependency.DT2");
041: Collection classes = mExtractor.getAllDependencies(
042: "com.reeltwo.jumble.dependency.DT2", true);
043: //System.out.println(classes);
044: assertEquals(3, classes.size());
045:
046: assertTrue(classes.contains("experiments.JumblerExperiment"));
047: assertTrue(classes
048: .contains("com.reeltwo.jumble.dependency.DT1"));
049: assertTrue(classes
050: .contains("com.reeltwo.jumble.dependency.DT3"));
051: }
052:
053: public void testDT3() {
054: Collection classes = mExtractor.getAllDependencies(
055: "com.reeltwo.jumble.dependency.DT3", true);
056: assertEquals(2, classes.size());
057:
058: assertTrue(classes.contains("experiments.JumblerExperiment"));
059: assertTrue(classes
060: .contains("com.reeltwo.jumble.dependency.DT1"));
061: }
062:
063: public void testDT4() {
064: Collection classes = mExtractor.getAllDependencies(
065: "com.reeltwo.jumble.dependency.DT4", true);
066: assertEquals(2, classes.size());
067:
068: assertTrue(classes.contains("experiments.JumblerExperiment"));
069: assertTrue(classes
070: .contains("com.reeltwo.jumble.dependency.DT1"));
071: }
072:
073: public void testDT5() {
074: Collection classes = mExtractor.getAllDependencies(
075: "com.reeltwo.jumble.dependency.DT5", true);
076: assertEquals(2, classes.size());
077:
078: assertTrue(classes.contains("experiments.JumblerExperiment"));
079: assertTrue(classes
080: .contains("com.reeltwo.jumble.dependency.DT1"));
081: }
082:
083: public void testDT6() {
084: Collection classes = mExtractor.getAllDependencies(
085: "com.reeltwo.jumble.dependency.DT6", true);
086: assertEquals(2, classes.size());
087:
088: assertTrue(classes.contains("experiments.JumblerExperiment"));
089: assertTrue(classes
090: .contains("com.reeltwo.jumble.dependency.DT1"));
091: }
092:
093: public void testDT7() {
094: Collection classes = mExtractor.getAllDependencies(
095: "com.reeltwo.jumble.dependency.DT7", true);
096: assertEquals(2, classes.size());
097:
098: assertTrue(classes.contains("experiments.JumblerExperiment"));
099: assertTrue(classes
100: .contains("com.reeltwo.jumble.dependency.DT1"));
101: }
102:
103: public void testDT8() {
104: Collection classes = mExtractor.getAllDependencies(
105: "com.reeltwo.jumble.dependency.DT8", true);
106: assertEquals(2, classes.size());
107:
108: assertTrue(classes.contains("experiments.JumblerExperiment"));
109: assertTrue(classes
110: .contains("com.reeltwo.jumble.dependency.DT1"));
111: }
112:
113: public void testNotFiltered() {
114: // huge amount of dependencies - this is more of a regression thing
115: // than an actual test - I have no idea what the value should be
116: // may vary with different JRE's (although hasn't done so far)
117: Collection classes = mExtractor.getAllDependencies(
118: "com.reeltwo.jumble.dependency.DT1", false);
119: assertTrue(1000 < classes.size());
120: }
121:
122: public void testSilly() {
123: mExtractor.setClassName("[[C");
124: Collection classes = mExtractor.getAllDependencies("[[C", true);
125: assertEquals(0, classes.size());
126: }
127:
128: public void testMainNormal() throws Exception {
129: JavaRunner runner = new JavaRunner(
130: "com.reeltwo.jumble.dependency.DependencyExtractor");
131: runner
132: .setArguments(new String[] { "com.reeltwo.jumble.dependency.DT2" });
133:
134: Process p = runner.start();
135:
136: BufferedReader in = new BufferedReader(new InputStreamReader(p
137: .getInputStream()));
138: BufferedReader err = new BufferedReader(new InputStreamReader(p
139: .getInputStream()));
140:
141: assertEquals(
142: "Dependencies for com.reeltwo.jumble.dependency.DT2",
143: in.readLine().trim());
144: assertEquals("", in.readLine().trim());
145: assertEquals("experiments.JumblerExperiment", in.readLine()
146: .trim());
147: assertEquals("com.reeltwo.jumble.dependency.DT1", in.readLine()
148: .trim());
149: assertEquals("com.reeltwo.jumble.dependency.DT3", in.readLine()
150: .trim());
151: assertEquals(null, in.readLine());
152: assertEquals(null, err.readLine());
153: p.destroy();
154: }
155:
156: public void testMainIgnore() throws Exception {
157: JavaRunner runner = new JavaRunner(
158: "com.reeltwo.jumble.dependency.DependencyExtractor");
159: runner
160: .setArguments(new String[] {
161: "experiments.JumblerExperimentTest", "-i",
162: "junit,java" });
163:
164: Process p = runner.start();
165:
166: BufferedReader in = new BufferedReader(new InputStreamReader(p
167: .getInputStream()));
168: BufferedReader err = new BufferedReader(new InputStreamReader(p
169: .getInputStream()));
170:
171: assertEquals(
172: "Dependencies for experiments.JumblerExperimentTest",
173: in.readLine().trim());
174: assertEquals("", in.readLine().trim());
175: assertEquals("experiments.JumblerExperiment", in.readLine()
176: .trim());
177: assertEquals(null, in.readLine());
178: assertEquals(null, err.readLine());
179: p.destroy();
180: }
181:
182: public static Test suite() {
183: TestSuite suite = new TestSuite(DependencyExtractorTest.class);
184: return suite;
185: }
186:
187: public static void main(String[] args) {
188: junit.textui.TestRunner.run(suite());
189: }
190:
191: public void testIsPrimitive() {
192: assertTrue(DependencyExtractor.isPrimitiveArray("[[C"));
193: assertFalse(DependencyExtractor
194: .isPrimitiveArray("[java.util.LinkedList"));
195: }
196: }
|