001: package com.mockrunner.test.gen;
002:
003: import java.util.ArrayList;
004: import java.util.List;
005:
006: import junit.framework.TestCase;
007:
008: import com.mockrunner.gen.proc.JavaLineAssembler;
009:
010: public class JavaLineAssemblerTest extends TestCase {
011: private final static String NL = System
012: .getProperty("line.separator");
013:
014: private JavaLineAssembler assembler;
015:
016: protected void setUp() throws Exception {
017: super .setUp();
018: assembler = new JavaLineAssembler();
019: }
020:
021: public void testReset() {
022: assembler.appendLine("xyz");
023: assembler.reset();
024: assertEquals("", assembler.getResult());
025: }
026:
027: public void testAppendBlankAndNewline() {
028: assembler.appendBlank(3);
029: assembler.appendBlank();
030: assembler.appendNewLine(3);
031: assembler.appendNewLine();
032: assertEquals(" " + NL + NL + NL + NL, assembler.getResult());
033: }
034:
035: public void testAppendLine() {
036: assembler.appendLine(null);
037: assertEquals("", assembler.getResult());
038: assembler.appendLine("");
039: assertEquals("", assembler.getResult());
040: assembler.appendLine("testLine");
041: assertEquals("testLine" + NL, assembler.getResult());
042: }
043:
044: public void testAppendCodeLines() {
045: assembler.appendCodeLines(null);
046: assertEquals(NL, assembler.getResult());
047: assembler.reset();
048: assembler.appendCodeLines(new String[0]);
049: assertEquals(NL, assembler.getResult());
050: assembler.reset();
051: String[] lines = new String[] { "Line1", "Line2", "Line3",
052: "Line4", "Line5" };
053: assembler.appendCodeLines(lines);
054: String expected = "Line1" + NL + "Line2" + NL + "Line3" + NL
055: + "Line4" + NL + "Line5" + NL;
056: assertEquals(expected, assembler.getResult());
057: }
058:
059: public void testAppendIndent() {
060: assembler.appendIndent();
061: assertEquals("", assembler.getResult());
062: assembler.setIndentLevel(2);
063: assembler.appendIndent();
064: assertEquals(" ", assembler.getResult());
065: assembler.reset();
066: assembler.setIndentLevel(1);
067: assembler.appendLine("testLine");
068: assertEquals(" testLine" + NL, assembler.getResult());
069: }
070:
071: public void testAppendPackageInfo() {
072: assembler.appendPackageInfo(null);
073: assertEquals("", assembler.getResult());
074: assembler.appendPackageInfo("");
075: assertEquals("", assembler.getResult());
076: assembler.appendPackageInfo("myPackage");
077: assertEquals("package myPackage;" + NL + NL, assembler
078: .getResult());
079: }
080:
081: public void testAppendImports() {
082: assembler.appendImports(null);
083: assertEquals("", assembler.getResult());
084: assembler.appendImports(new ArrayList());
085: assertEquals("", assembler.getResult());
086: assembler.appendImport("com.MyClass");
087: assertEquals("import com.MyClass;" + NL, assembler.getResult());
088: assembler.reset();
089: List importList = new ArrayList();
090: importList.add("com.MyClass1");
091: importList.add("com.MyClass2");
092: importList.add("com.MyClass3");
093: assembler.appendImports(importList);
094: assertEquals("import com.MyClass1;" + NL
095: + "import com.MyClass2;" + NL + "import com.MyClass3;"
096: + NL, assembler.getResult());
097: }
098:
099: public void testAppendClassDefintion() {
100: assembler.appendClassDefintion(null);
101: assertEquals("", assembler.getResult());
102: assembler.appendClassDefintion("");
103: assertEquals("", assembler.getResult());
104: assembler.appendClassDefintion("MyClass");
105: assertEquals("public class MyClass" + NL, assembler.getResult());
106: assembler.reset();
107: assembler.appendClassDefintion("MyClass", "");
108: assertEquals("public class MyClass" + NL, assembler.getResult());
109: assembler.reset();
110: assembler.appendClassDefintion("MyClass", new String[0]);
111: assertEquals("public class MyClass" + NL, assembler.getResult());
112: assembler.reset();
113: assembler.appendClassDefintion("MyClass", "", "", null);
114: assertEquals("public class MyClass" + NL, assembler.getResult());
115: assembler.reset();
116: assembler.appendClassDefintion("MyClass", "abstract", "", null);
117: assertEquals("public abstract class MyClass" + NL, assembler
118: .getResult());
119: }
120:
121: public void testAppendClassDefintionWithSuperClass() {
122: assembler.appendClassDefintion(null, "MySuperClass");
123: assertEquals("", assembler.getResult());
124: assembler.appendClassDefintion("", "MySuperClass");
125: assertEquals("", assembler.getResult());
126: assembler.appendClassDefintion("MyClass", "MySuperClass");
127: assertEquals("public class MyClass extends MySuperClass" + NL,
128: assembler.getResult());
129: assembler.reset();
130: assembler.appendClassDefintion("MyClass", "", "MySuperClass",
131: null);
132: assertEquals("public class MyClass extends MySuperClass" + NL,
133: assembler.getResult());
134: }
135:
136: public void testAppendClassDefintionWithInterfaces() {
137: assembler.appendClassDefintion(null, new String[] { "1" });
138: assertEquals("", assembler.getResult());
139: assembler.appendClassDefintion("", new String[] { "1" });
140: assertEquals("", assembler.getResult());
141: assembler.appendClassDefintion("MyClass", new String[] { "1" });
142: assertEquals("public class MyClass implements 1" + NL,
143: assembler.getResult());
144: assembler.reset();
145: assembler.appendClassDefintion("MyClass", new String[] {
146: "Interface1", "Interface2", "Interface3" });
147: assertEquals(
148: "public class MyClass implements Interface1, Interface2, Interface3"
149: + NL, assembler.getResult());
150: assembler.reset();
151: assembler.appendClassDefintion("MyClass", "", "", new String[] {
152: "1", "2" });
153: assertEquals("public class MyClass implements 1, 2" + NL,
154: assembler.getResult());
155: }
156:
157: public void testAppendClassDefintionWithSuperClassAndInterfaces() {
158: assembler.setIndentLevel(2);
159: assembler.appendClassDefintion("MyClass", "", "MySuperClass",
160: new String[] { "1", "2" });
161: assertEquals(
162: " public class MyClass extends MySuperClass implements 1, 2"
163: + NL, assembler.getResult());
164: }
165:
166: public void testAppendMemberDeclaration() {
167: assembler.setIndentLevel(1);
168: assembler.appendMemberDeclaration("", "myName");
169: assertEquals("", assembler.getResult());
170: assembler.appendMemberDeclaration("MyType", null);
171: assertEquals("", assembler.getResult());
172: assembler.appendMemberDeclaration("MyType", "myName");
173: assertEquals(" private MyType myName;" + NL, assembler
174: .getResult());
175: }
176:
177: public void testAppendMethodDeclaration() {
178: assembler.setIndentLevel(2);
179: assembler.appendMethodDeclaration("");
180: assertEquals("", assembler.getResult());
181: assembler.appendMethodDeclaration(null);
182: assertEquals("", assembler.getResult());
183: assembler.appendMethodDeclaration("myMethod");
184: assertEquals(" void myMethod()" + NL, assembler
185: .getResult());
186: assembler.reset();
187: assembler.setDefaultMethodModifier("protected");
188: assembler.setIndentLevel(1);
189: assembler.appendMethodDeclaration("myMethod");
190: assertEquals(" protected void myMethod()" + NL, assembler
191: .getResult());
192: }
193:
194: public void testAppendMethodDeclarationWithReturnType() {
195: assembler.setIndentLevel(2);
196: assembler.appendMethodDeclaration("MyReturnType", "");
197: assertEquals("", assembler.getResult());
198: assembler.appendMethodDeclaration("MyReturnType", null);
199: assertEquals("", assembler.getResult());
200: assembler.setDefaultMethodModifier("private");
201: assembler.appendMethodDeclaration("", "myMethod");
202: assertEquals(" private void myMethod()" + NL, assembler
203: .getResult());
204: assembler.reset();
205: assembler.setDefaultMethodModifier("");
206: assembler.setIndentLevel(0);
207: assembler.appendMethodDeclaration("MyReturnType", "myMethod");
208: assertEquals("MyReturnType myMethod()" + NL, assembler
209: .getResult());
210: }
211:
212: public void testAppendMethodDeclarationWithReturnTypeAndParameters() {
213: assembler.appendMethodDeclaration("MyReturnType", "",
214: new String[] { "1" }, new String[] { "2" });
215: assertEquals("", assembler.getResult());
216: assembler.appendMethodDeclaration("MyReturnType", null,
217: new String[] { "1" }, new String[] { "2" });
218: assertEquals("", assembler.getResult());
219: assembler.setDefaultMethodModifier("public");
220: assembler.appendMethodDeclaration("", "myMethod",
221: new String[] { "String" }, new String[] { "myString" });
222: assertEquals("public void myMethod(String myString)" + NL,
223: assembler.getResult());
224: assembler.reset();
225: assembler.setIndentLevel(1);
226: String[] types = new String[] { "String", "int", "Integer",
227: "double" };
228: assembler.appendMethodDeclaration("MyReturnType", "myMethod",
229: types, null);
230: assertEquals(
231: " MyReturnType myMethod(String param0, int param1, Integer param2, double param3)"
232: + NL, assembler.getResult());
233: assembler.reset();
234: String[] names = new String[] { "string0", "int1", "int2" };
235: assembler.appendMethodDeclaration("MyReturnType", "myMethod",
236: types, names);
237: assertEquals(
238: "MyReturnType myMethod(String string0, int int1, Integer int2, double param3)"
239: + NL, assembler.getResult());
240: assembler.reset();
241: assembler.setDefaultMethodModifier("protected");
242: names = new String[] { "string0", "int1", "int2", "double3" };
243: assembler.appendMethodDeclaration("MyReturnType", "myMethod",
244: types, names);
245: assertEquals(
246: "protected MyReturnType myMethod(String string0, int int1, Integer int2, double double3)"
247: + NL, assembler.getResult());
248: assembler.reset();
249: assembler.setDefaultMethodModifier("private");
250: names = new String[] { "string0", "int1", "int2", "double3",
251: "xyz" };
252: assembler.appendMethodDeclaration("MyReturnType", "myMethod",
253: types, names);
254: assertEquals(
255: "private MyReturnType myMethod(String string0, int int1, Integer int2, double double3)"
256: + NL, assembler.getResult());
257: }
258:
259: public void testAppendMethodDeclarationWithReturnTypeParametersAndModifiers() {
260: assembler.appendMethodDeclaration(new String[] { "abstract" },
261: "MyReturnType", "", new String[] { "1" },
262: new String[] { "2" });
263: assertEquals("", assembler.getResult());
264: assembler.appendMethodDeclaration(new String[] { "abstract" },
265: "MyReturnType", null, new String[] { "1" },
266: new String[] { "2" });
267: assertEquals("", assembler.getResult());
268: assembler.setDefaultMethodModifier("public");
269: assembler.appendMethodDeclaration(new String[] { "abstract" },
270: "", "myMethod", new String[] { "String" },
271: new String[] { "myString" });
272: assertEquals("public abstract void myMethod(String myString)"
273: + NL, assembler.getResult());
274: assembler.reset();
275: String[] types = new String[] { "String", "int", "Integer",
276: "double" };
277: String[] names = new String[] { "string0", "int1", "int2" };
278: String[] modifiers = new String[] { "abstract", "synchronized" };
279: assembler.appendMethodDeclaration(modifiers, "MyReturnType",
280: "myMethod", types, names);
281: assertEquals(
282: "abstract synchronized MyReturnType myMethod(String string0, int int1, Integer int2, double param3)"
283: + NL, assembler.getResult());
284: }
285:
286: public void testAppendMethodDeclarationWithReturnTypeParametersModifiersAndExceptions() {
287: assembler.setDefaultMethodModifier("public");
288: assembler.appendMethodDeclaration(new String[] { "abstract" },
289: "", "myMethod", new String[] { "String" },
290: new String[] { "myString" }, new String[] {
291: "FirstException", "SecondException" });
292: assertEquals(
293: "public abstract void myMethod(String myString) throws FirstException, SecondException"
294: + NL, assembler.getResult());
295: assembler.reset();
296: String[] types = new String[] { "String", "int", "Integer",
297: "double" };
298: String[] names = new String[] { "string0", "int1", "int2" };
299: String[] modifiers = new String[] { "abstract", "synchronized" };
300: assembler.appendMethodDeclaration(modifiers, "MyReturnType",
301: "myMethod", types, names, null);
302: assertEquals(
303: "abstract synchronized MyReturnType myMethod(String string0, int int1, Integer int2, double param3)"
304: + NL, assembler.getResult());
305: assembler.reset();
306: assembler.appendMethodDeclaration(modifiers, null, "myMethod",
307: null, null, new String[] { "Exception" });
308: assertEquals(
309: "abstract synchronized void myMethod() throws Exception"
310: + NL, assembler.getResult());
311: }
312:
313: public void testAppendConstructorDeclaration() {
314: assembler.setIndentLevel(1);
315: assembler.appendConstructorDeclaration("");
316: assertEquals("", assembler.getResult());
317: assembler.appendConstructorDeclaration(null);
318: assertEquals("", assembler.getResult());
319: assembler.appendConstructorDeclaration("MyConstructor");
320: assertEquals(" public MyConstructor()" + NL, assembler
321: .getResult());
322: }
323:
324: public void testAppendConstructorDeclarationWithParameters() {
325: assembler.setIndentLevel(1);
326: assembler.appendConstructorDeclaration("", new String[0],
327: new String[0]);
328: assertEquals("", assembler.getResult());
329: assembler.appendConstructorDeclaration(null,
330: new String[] { "1" }, new String[] { "2" });
331: assertEquals("", assembler.getResult());
332: String[] types = new String[] { "String", "int", "Integer",
333: "double" };
334: String[] names = new String[] { "string0", "int1", "int2" };
335: assembler.appendConstructorDeclaration("MyConstructor", types,
336: names);
337: assertEquals(
338: " public MyConstructor(String string0, int int1, Integer int2, double param3)"
339: + NL, assembler.getResult());
340: }
341:
342: public void testAppendConstructorDeclarationWithParametersAndExceptions() {
343: assembler.setIndentLevel(1);
344: assembler.appendConstructorDeclaration("", new String[0],
345: new String[0], null);
346: assertEquals("", assembler.getResult());
347: String[] types = new String[] { "String", "int", "Integer",
348: "double" };
349: String[] names = new String[] { "string0", "int1", "int2" };
350: String[] exceptions = new String[] { "Exception1",
351: "Exception2", "Exception3" };
352: assembler.appendConstructorDeclaration("MyConstructor", types,
353: names, exceptions);
354: assertEquals(
355: " public MyConstructor(String string0, int int1, Integer int2, double param3) throws Exception1, Exception2, Exception3"
356: + NL, assembler.getResult());
357: }
358:
359: public void testAppendComment() {
360: assembler.setIndentLevel(1);
361: assembler.appendComment("");
362: assertEquals("", assembler.getResult());
363: assembler.appendComment(null);
364: assertEquals("", assembler.getResult());
365: assembler.appendComment("this is a comment");
366: assertEquals(" //this is a comment" + NL, assembler
367: .getResult());
368: }
369:
370: public void testAppendBlockComment() {
371: assembler.setIndentLevel(1);
372: assembler.appendBlockComment(new String[0]);
373: assertEquals("", assembler.getResult());
374: assembler.appendBlockComment(null);
375: assertEquals("", assembler.getResult());
376: String[] lines = new String[] { "This is a", "multiline block",
377: "comment" };
378: assembler.appendBlockComment(lines);
379: String expected = " /*" + NL + " * This is a" + NL
380: + " * multiline block" + NL + " * comment" + NL
381: + " */" + NL;
382: assertEquals(expected, assembler.getResult());
383: assembler.reset();
384: lines = new String[] { "Comment" };
385: assembler.appendBlockComment(lines);
386: expected = "/*" + NL + " * Comment" + NL + " */" + NL;
387: assertEquals(expected, assembler.getResult());
388: }
389:
390: public void testAppendJavaDocComment() {
391: assembler.setIndentLevel(1);
392: assembler.appendJavaDocComment(new String[0]);
393: assertEquals("", assembler.getResult());
394: assembler.appendJavaDocComment(null);
395: assertEquals("", assembler.getResult());
396: String[] lines = new String[] { "This is a", "multiline block",
397: "comment" };
398: assembler.appendJavaDocComment(lines);
399: String expected = " /**" + NL + " * This is a" + NL
400: + " * multiline block" + NL + " * comment" + NL
401: + " */" + NL;
402: assertEquals(expected, assembler.getResult());
403: }
404: }
|