001: /*
002: * Author: Chris Seguin
003: *
004: * This software has been developed under the copyleft
005: * rules of the GNU General Public License. Please
006: * consult the GNU General Public License for more
007: * details about use and distribution of this software.
008: */
009: package org.acm.seguin.refactor.type;
010:
011: import java.io.File;
012: import java.io.IOException;
013: import org.acm.seguin.io.FileCopy;
014: import org.acm.seguin.junit.DirSourceTestCase;
015: import org.acm.seguin.junit.FileCompare;
016: import net.sourceforge.jrefactory.ast.ASTClassDeclaration;
017: import net.sourceforge.jrefactory.ast.ASTCompilationUnit;
018: import net.sourceforge.jrefactory.ast.ASTName;
019: import net.sourceforge.jrefactory.ast.ASTPackageDeclaration;
020: import net.sourceforge.jrefactory.ast.ASTTypeDeclaration;
021: import net.sourceforge.jrefactory.ast.ASTUnmodifiedClassDeclaration;
022: import org.acm.seguin.refactor.RefactoringException;
023: import org.acm.seguin.summary.PackageSummary;
024: import org.acm.seguin.summary.SummaryTraversal;
025: import org.acm.seguin.summary.TypeSummary;
026: import org.acm.seguin.summary.query.GetTypeSummary;
027:
028: /**
029: * Unit test for performing the rename class refactoring
030: *
031: *@author Chris Seguin
032: */
033: public class TestRenameClass extends DirSourceTestCase {
034: /**
035: * Constructor for the TestRenameClass object
036: *
037: *@param name Description of Parameter
038: */
039: public TestRenameClass(String name) {
040: super (name);
041: }
042:
043: /**
044: * A unit test for JUnit
045: *
046: *@exception IOException Description of Exception
047: */
048: public void test01() throws IOException {
049: File cleanDir = new File(clean);
050: File destDir = new File(root + "\\ren");
051: File impDir = new File(root + "\\imp");
052:
053: (new FileCopy(new File(cleanDir, "ConflictClass.java"),
054: new File(destDir, "ConflictClass.java"), false)).run();
055:
056: (new FileCopy(new File(cleanDir, "BaseClass.java"), new File(
057: destDir, "BaseClass.java"), false)).run();
058:
059: (new SummaryTraversal(root)).run();
060: RenameClassRefactoring rcf = new RenameClassRefactoring();
061: rcf.setDirectory(destDir.getCanonicalPath());
062: rcf.setOldClassName("BaseClass");
063: rcf.setNewClassName("ConflictClass");
064:
065: boolean exceptionThrown = false;
066: try {
067: rcf.run();
068: } catch (RefactoringException re) {
069: exceptionThrown = true;
070: }
071:
072: (new File(destDir, "BaseClass.java")).delete();
073: (new File(destDir, "ConflictClass.java")).delete();
074:
075: assertTrue("Did not complain about the name conflicts",
076: exceptionThrown);
077: }
078:
079: /**
080: * A unit test for JUnit
081: *
082: *@exception RefactoringException Description of Exception
083: *@exception IOException Description of Exception
084: */
085: public void test02() throws RefactoringException, IOException {
086: File cleanDir = new File(clean);
087: File destDir = new File(root + "\\ren");
088: File checkDir = new File(check + "\\ut1\\step8");
089:
090: (new FileCopy(new File(cleanDir, "ChildExtensionClass.java"),
091: new File(destDir, "ChildExtensionClass.java"), false))
092: .run();
093:
094: (new FileCopy(new File(cleanDir, "BaseClass.java"), new File(
095: destDir, "BaseClass.java"), false)).run();
096:
097: (new SummaryTraversal(root)).run();
098: RenameClassRefactoring rcf = new RenameClassRefactoring();
099: rcf.setDirectory(destDir.getCanonicalPath());
100: rcf.setOldClassName("BaseClass");
101: rcf.setNewClassName("RenamedClass");
102:
103: rcf.run();
104:
105: FileCompare.assertEquals("RenamedClass class in error",
106: new File(checkDir, "RenamedClass.java"), new File(
107: destDir, "RenamedClass.java"));
108:
109: FileCompare.assertEquals("ChildExtensionClass class in error",
110: new File(checkDir, "ChildExtensionClass.java"),
111: new File(destDir, "ChildExtensionClass.java"));
112:
113: (new File(destDir, "RenamedClass.java")).delete();
114: (new File(destDir, "ChildExtensionClass.java")).delete();
115: }
116:
117: /**
118: * A unit test for JUnit
119: *
120: *@exception RefactoringException Description of Exception
121: *@exception IOException Description of Exception
122: */
123: public void test03() throws RefactoringException, IOException {
124: File cleanDir = new File(clean);
125: File destDir = new File(root + "\\ren");
126: File impDir = new File(root + "\\imp");
127: File conflictDir = new File(root + "\\conflict");
128: File checkDir = new File(check + "\\ut1\\step9");
129:
130: (new FileCopy(new File(cleanDir, "ChildExtensionClass.java"),
131: new File(destDir, "ChildExtensionClass.java"), false))
132: .run();
133:
134: (new FileCopy(new File(cleanDir, "BaseClass.java"), new File(
135: destDir, "BaseClass.java"), false)).run();
136:
137: (new FileCopy(
138: new File(cleanDir, "conflict_ConflictClass.java"),
139: new File(conflictDir, "ConflictClass.java"), false))
140: .run();
141:
142: (new FileCopy(new File(cleanDir, "ImporterClass.java"),
143: new File(impDir, "ImporterClass.java"), false)).run();
144:
145: (new SummaryTraversal(root)).run();
146: RenameClassRefactoring rcf = new RenameClassRefactoring();
147: rcf.setDirectory(destDir.getCanonicalPath());
148: rcf.setOldClassName("BaseClass");
149: rcf.setNewClassName("RenamedClass");
150:
151: rcf.run();
152:
153: FileCompare.assertEquals("RenamedClass class in error",
154: new File(checkDir, "RenamedClass.java"), new File(
155: destDir, "RenamedClass.java"));
156:
157: FileCompare.assertEquals("ChildExtensionClass class in error",
158: new File(checkDir, "ChildExtensionClass.java"),
159: new File(destDir, "ChildExtensionClass.java"));
160:
161: FileCompare.assertEquals("ConflictClass class in error",
162: new File(checkDir, "ConflictClass.java"), new File(
163: conflictDir, "ConflictClass.java"));
164:
165: FileCompare.assertEquals("ImporterClass class in error",
166: new File(checkDir, "ImporterClass.java"), new File(
167: impDir, "ImporterClass.java"));
168:
169: (new File(destDir, "RenamedClass.java")).delete();
170: (new File(destDir, "ChildExtensionClass.java")).delete();
171: (new File(conflictDir, "ConflictClass.java")).delete();
172: (new File(impDir, "ImporterClass.java")).delete();
173: }
174:
175: /**
176: * A unit test for JUnit
177: *
178: *@exception RefactoringException Description of Exception
179: *@exception IOException Description of Exception
180: */
181: public void test04() throws RefactoringException, IOException {
182: File cleanDir = new File(clean + "\\ren");
183: File renDir = new File(root + "\\ren");
184: File refDir = new File(root + "\\ref");
185: refDir.mkdirs();
186: File otherDir = new File(root + "\\other");
187: otherDir.mkdirs();
188: File checkDir = new File(check + "\\ut1\\step25");
189:
190: (new File(renDir, "NewClass.java")).delete();
191: (new FileCopy(new File(cleanDir, "OldClass.java"), new File(
192: renDir, "OldClass.java"), false)).run();
193: (new FileCopy(new File(cleanDir, "UsedClass.java"), new File(
194: renDir, "UsedClass.java"), false)).run();
195: (new FileCopy(new File(cleanDir, "NearMiss.java"), new File(
196: renDir, "NearMiss.java"), false)).run();
197:
198: (new FileCopy(new File(cleanDir, "other_NearMiss.java"),
199: new File(otherDir, "NearMiss.java"), false)).run();
200:
201: (new FileCopy(new File(cleanDir, "ImportStaticFieldRef.java"),
202: new File(refDir, "ImportStaticFieldRef.java"), false))
203: .run();
204: (new FileCopy(new File(cleanDir, "ImportStaticMethodRef.java"),
205: new File(refDir, "ImportStaticMethodRef.java"), false))
206: .run();
207: (new FileCopy(new File(cleanDir, "ImportAllocation.java"),
208: new File(refDir, "ImportAllocation.java"), false))
209: .run();
210: (new FileCopy(new File(cleanDir, "ImportCast.java"), new File(
211: refDir, "ImportCast.java"), false)).run();
212: (new FileCopy(new File(cleanDir, "ImportLocalVar.java"),
213: new File(refDir, "ImportLocalVar.java"), false)).run();
214: (new FileCopy(new File(cleanDir, "ImportParameter.java"),
215: new File(refDir, "ImportParameter.java"), false)).run();
216: (new FileCopy(new File(cleanDir, "ImportField.java"), new File(
217: refDir, "ImportField.java"), false)).run();
218: (new FileCopy(new File(cleanDir, "ImportReturn.java"),
219: new File(refDir, "ImportReturn.java"), false)).run();
220: (new FileCopy(new File(cleanDir, "ImportException.java"),
221: new File(refDir, "ImportException.java"), false)).run();
222: (new FileCopy(new File(cleanDir, "ImportExtends.java"),
223: new File(refDir, "ImportExtends.java"), false)).run();
224: (new FileCopy(new File(cleanDir, "ImportImplements.java"),
225: new File(refDir, "ImportImplements.java"), false))
226: .run();
227: (new FileCopy(new File(cleanDir, "ImportConstructor.java"),
228: new File(refDir, "ImportConstructor.java"), false))
229: .run();
230: (new FileCopy(new File(cleanDir, "ImportNotUse.java"),
231: new File(refDir, "ImportNotUse.java"), false)).run();
232: (new FileCopy(new File(cleanDir, "FalseStatic.java"), new File(
233: refDir, "FalseStatic.java"), false)).run();
234: (new FileCopy(new File(cleanDir, "ImportAnonymous.java"),
235: new File(refDir, "ImportAnonymous.java"), false)).run();
236: (new FileCopy(new File(cleanDir, "ImportAnonymousField.java"),
237: new File(refDir, "ImportAnonymousField.java"), false))
238: .run();
239: (new FileCopy(new File(cleanDir, "ImportClassAccess.java"),
240: new File(refDir, "ImportClassAccess.java"), false))
241: .run();
242:
243: (new SummaryTraversal(root)).run();
244: RenameClassRefactoring rcf = new RenameClassRefactoring();
245: rcf.setDirectory(renDir.getCanonicalPath());
246: rcf.setOldClassName("OldClass");
247: rcf.setNewClassName("NewClass");
248:
249: rcf.run();
250:
251: FileCompare.assertEquals("NewClass class in error", new File(
252: checkDir, "NewClass.java"), new File(renDir,
253: "NewClass.java"));
254: FileCompare.assertEquals("ImportStaticFieldRef class in error",
255: new File(checkDir, "ImportStaticFieldRef.java"),
256: new File(refDir, "ImportStaticFieldRef.java"));
257: FileCompare.assertEquals(
258: "ImportStaticMethodRef class in error", new File(
259: checkDir, "ImportStaticMethodRef.java"),
260: new File(refDir, "ImportStaticMethodRef.java"));
261: FileCompare.assertEquals("ImportAllocation class in error",
262: new File(checkDir, "ImportAllocation.java"), new File(
263: refDir, "ImportAllocation.java"));
264: FileCompare.assertEquals("ImportCast class in error", new File(
265: checkDir, "ImportCast.java"), new File(refDir,
266: "ImportCast.java"));
267: FileCompare.assertEquals("ImportLocalVar class in error",
268: new File(checkDir, "ImportLocalVar.java"), new File(
269: refDir, "ImportLocalVar.java"));
270: FileCompare.assertEquals("ImportParameter class in error",
271: new File(checkDir, "ImportParameter.java"), new File(
272: refDir, "ImportParameter.java"));
273: FileCompare.assertEquals("ImportField class in error",
274: new File(checkDir, "ImportField.java"), new File(
275: refDir, "ImportField.java"));
276: FileCompare.assertEquals("ImportReturn class in error",
277: new File(checkDir, "ImportReturn.java"), new File(
278: refDir, "ImportReturn.java"));
279: FileCompare.assertEquals("ImportException class in error",
280: new File(checkDir, "ImportException.java"), new File(
281: refDir, "ImportException.java"));
282: FileCompare.assertEquals("ImportExtends class in error",
283: new File(checkDir, "ImportExtends.java"), new File(
284: refDir, "ImportExtends.java"));
285: FileCompare.assertEquals("ImportImplements class in error",
286: new File(checkDir, "ImportImplements.java"), new File(
287: refDir, "ImportImplements.java"));
288: FileCompare.assertEquals("ImportConstructor class in error",
289: new File(checkDir, "ImportConstructor.java"), new File(
290: refDir, "ImportConstructor.java"));
291: FileCompare.assertEquals("ImportNotUse class in error",
292: new File(checkDir, "ImportNotUse.java"), new File(
293: refDir, "ImportNotUse.java"));
294: FileCompare.assertEquals("FalseStatic class in error",
295: new File(checkDir, "FalseStatic.java"), new File(
296: refDir, "FalseStatic.java"));
297: FileCompare.assertEquals("ImportAnonymous class in error",
298: new File(checkDir, "ImportAnonymous.java"), new File(
299: refDir, "ImportAnonymous.java"));
300: FileCompare.assertEquals("ImportAnonymousField class in error",
301: new File(checkDir, "ImportAnonymousField.java"),
302: new File(refDir, "ImportAnonymousField.java"));
303: FileCompare.assertEquals("ImportClassAccess class in error",
304: new File(checkDir, "ImportClassAccess.java"), new File(
305: refDir, "ImportClassAccess.java"));
306:
307: (new File(renDir, "NewClass.java")).delete();
308: (new File(renDir, "UsedClass.java")).delete();
309: (new File(renDir, "NearMiss.java")).delete();
310:
311: (new File(otherDir, "NearMiss.java")).delete();
312:
313: (new File(refDir, "ImportStaticFieldRef.java")).delete();
314: (new File(refDir, "ImportStaticMethodRef.java")).delete();
315: (new File(refDir, "ImportAllocation.java")).delete();
316: (new File(refDir, "ImportCast.java")).delete();
317: (new File(refDir, "ImportLocalVar.java")).delete();
318: (new File(refDir, "ImportParameter.java")).delete();
319: (new File(refDir, "ImportField.java")).delete();
320: (new File(refDir, "ImportReturn.java")).delete();
321: (new File(refDir, "ImportException.java")).delete();
322: (new File(refDir, "ImportExtends.java")).delete();
323: (new File(refDir, "ImportImplements.java")).delete();
324: (new File(refDir, "ImportConstructor.java")).delete();
325: (new File(refDir, "ImportNotUse.java")).delete();
326: (new File(refDir, "FalseStatic.java")).delete();
327: (new File(refDir, "ImportAnonymous.java")).delete();
328: (new File(refDir, "ImportAnonymousField.java")).delete();
329: (new File(refDir, "ImportClassAccess.java")).delete();
330: }
331: }
|