[Profit-devs] SF.net SVN: profit: [88] trunk/profit
Status: Planning
Brought to you by:
pgr0ss
|
From: <yz...@us...> - 2006-12-14 05:31:59
|
Revision: 88
http://svn.sourceforge.net/profit/?rev=88&view=rev
Author: yzhou12
Date: 2006-12-13 21:31:57 -0800 (Wed, 13 Dec 2006)
Log Message:
-----------
Worked around comments ordering problem in "toJava"; handle comment in "toFitnesse".
Modified Paths:
--------------
trunk/profit/.classpath
trunk/profit/src/com/thoughtworks/tools/profit/tofitnesse/RegexJavaParser.java
trunk/profit/src/com/thoughtworks/tools/profit/tojava/TestTable.java
trunk/profit/src/com/thoughtworks/tools/profit/tojava/TestTableWriter.java
trunk/profit/test/com/thoughtworks/tools/profit/tojava/TestTableTests.java
Added Paths:
-----------
trunk/profit/sample/FitNesseRoot/FrontPage/PageComment/
trunk/profit/sample/FitNesseRoot/FrontPage/PageComment/content.txt
trunk/profit/sample/FitNesseRoot/FrontPage/PageComment/properties.xml
Modified: trunk/profit/.classpath
===================================================================
--- trunk/profit/.classpath 2006-11-30 13:15:44 UTC (rev 87)
+++ trunk/profit/.classpath 2006-12-14 05:31:57 UTC (rev 88)
@@ -1,16 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="sample/output/toJava"/>
<classpathentry kind="src" path="generated"/>
<classpathentry kind="src" path="test"/>
- <classpathentry kind="src" path="sample/output"/>
<classpathentry kind="src" path="sample/fixtures"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry sourcepath="/Users/gcb/src/antlr-2.7.6" kind="lib" path="lib/antlr.jar"/>
+ <classpathentry kind="lib" path="lib/antlr.jar" sourcepath="/Users/gcb/src/antlr-2.7.6"/>
<classpathentry kind="lib" path="lib/junit-4.1.jar"/>
<classpathentry kind="lib" path="lib/fitnesse.jar"/>
<classpathentry kind="lib" path="lib/commons-lang-2.1.jar"/>
- <classpathentry sourcepath="/home/paul/downloads/commons-io-1.2-src-ide.zip" kind="lib" path="lib/commons-io-1.2.jar"/>
- <classpathentry sourcepath="/home/paul/downloads/ws-jaxme-0.5.1/lib/jaxmejs-src-0.5.1.zip" kind="lib" path="lib/jaxmejs-0.5.1.jar"/>
+ <classpathentry kind="lib" path="lib/commons-io-1.2.jar" sourcepath="/home/paul/downloads/commons-io-1.2-src-ide.zip"/>
+ <classpathentry kind="lib" path="lib/jaxmejs-0.5.1.jar" sourcepath="/home/paul/downloads/ws-jaxme-0.5.1/lib/jaxmejs-src-0.5.1.zip"/>
<classpathentry kind="output" path="build"/>
</classpath>
Added: trunk/profit/sample/FitNesseRoot/FrontPage/PageComment/content.txt
===================================================================
--- trunk/profit/sample/FitNesseRoot/FrontPage/PageComment/content.txt (rev 0)
+++ trunk/profit/sample/FitNesseRoot/FrontPage/PageComment/content.txt 2006-12-14 05:31:57 UTC (rev 88)
@@ -0,0 +1,9 @@
+This is a page has some comments.
+
+!|sample.math.DivisionColumnFixture|
+|left|right|result?|
+|1|1|1|
+|2|1|2|
+|12|4|3|
+
+Here has more comments.
Added: trunk/profit/sample/FitNesseRoot/FrontPage/PageComment/properties.xml
===================================================================
--- trunk/profit/sample/FitNesseRoot/FrontPage/PageComment/properties.xml (rev 0)
+++ trunk/profit/sample/FitNesseRoot/FrontPage/PageComment/properties.xml 2006-12-14 05:31:57 UTC (rev 88)
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<properties>
+ <Edit/>
+ <Files/>
+ <LastModified>20060917213817</LastModified>
+ <Properties/>
+ <RecentChanges/>
+ <Refactor/>
+ <Search/>
+ <Test/>
+ <Versions/>
+ <WhereUsed/>
+ <saveId>1158541244953</saveId>
+ <ticketId>3740466496953970608</ticketId>
+</properties>
Modified: trunk/profit/src/com/thoughtworks/tools/profit/tofitnesse/RegexJavaParser.java
===================================================================
--- trunk/profit/src/com/thoughtworks/tools/profit/tofitnesse/RegexJavaParser.java 2006-11-30 13:15:44 UTC (rev 87)
+++ trunk/profit/src/com/thoughtworks/tools/profit/tofitnesse/RegexJavaParser.java 2006-12-14 05:31:57 UTC (rev 88)
@@ -1,5 +1,8 @@
package com.thoughtworks.tools.profit.tofitnesse;
+import java.io.IOException;
+import java.io.LineNumberReader;
+import java.io.StringReader;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
@@ -13,10 +16,9 @@
private Pattern pagePackagePattern;
private Pattern classPattern;
- //private Pattern filePathPattern;
private Pattern methodPattern;
private Pattern assertionPattern;
- private Pattern assignmentPattern;
+ private Pattern assignmentPattern;
public RegexJavaParser() {
pagePackagePattern = Pattern.compile("package (.*);");
@@ -38,7 +40,10 @@
String[][] values = convertColumnMapIntoValuesArray(columns);
int tableNumber = Integer.parseInt(secondGroupOfPatternMatch(classPattern, javaCode));
- return new TestTable(tableNumber, fixtureClassName, columnNames, values, filePath);
+ TestTable testTable = new TestTable(tableNumber, fixtureClassName, columnNames, values, filePath);
+ testTable.setLeadingComment(getLeadingComment(javaCode));
+ testTable.setTrailingComment(getTrailingComment(javaCode));
+ return testTable;
}
private String getFixtureName(String javaCode) {
@@ -148,4 +153,34 @@
return values;
}
+ private String getLeadingComment(String javaCode) {
+ return grepComment(javaCode, true);
+ }
+
+ private String getTrailingComment(String javaCode) {
+ return grepComment(javaCode, false);
+ }
+
+ private String grepComment(String javaCode, boolean isLeadingComment) {
+ StringBuffer comment = null;
+ try {
+ LineNumberReader r = new LineNumberReader(new StringReader(javaCode));
+ final String methodStartRegExpr = isLeadingComment ? "^.*leadingComment.*$"
+ : "^.*trailingComment.*$";
+ for (String line = r.readLine(); line != null; line = r.readLine()) {
+ if (line.matches(methodStartRegExpr)) {
+ comment = new StringBuffer();
+ } else if (comment != null) {
+ if (line.startsWith("//")) {
+ comment.append(line.substring("// ".length())).append("\n");
+ } else if (line.matches("^ *}")) {
+ break;
+ }
+ }
+ }
+ } catch (IOException e) {
+ }
+ return comment == null ? null : comment.toString();
+ }
+
}
Modified: trunk/profit/src/com/thoughtworks/tools/profit/tojava/TestTable.java
===================================================================
--- trunk/profit/src/com/thoughtworks/tools/profit/tojava/TestTable.java 2006-11-30 13:15:44 UTC (rev 87)
+++ trunk/profit/src/com/thoughtworks/tools/profit/tojava/TestTable.java 2006-12-14 05:31:57 UTC (rev 88)
@@ -45,14 +45,24 @@
public String toFitnesseSource() {
StringBuffer fitnesse = new StringBuffer();
+ if (leadingComment != null) {
+ fitnesse.append(restoreComment(leadingComment));
+ }
fitnesse.append("!|" + fixtureName + "|\n");
fitnesse.append(toFitnesseRow(columnNames));
for (int i = 0; i < values.length; i++) {
fitnesse.append(toFitnesseRow(values[i]));
}
+ if (trailingComment != null) {
+ fitnesse.append(restoreComment(trailingComment));
+ }
return fitnesse.toString();
}
+ private String restoreComment(String comment) {
+ return comment.replaceFirst("// ", "").replaceAll("\n// ", "\n");
+ }
+
private String toFitnesseRow(String[] row) {
return "|" + StringUtils.join(row, "|") + "|\n";
}
@@ -69,19 +79,15 @@
JavaSource javaSource = factory.newJavaSource(JavaQNameImpl
.getInstance(getJavaTestClassFullName(packageName, className)),
JavaSource.PUBLIC);
+
javaSource.addImport(JavaQNameImpl.getInstance(fixtureClass.getName()));
javaSource.addExtends(TestCase.class);
- if (leadingComment != null) {
- javaSource.addRawJavaSource(leadingComment);
+
+ if (leadingComment != null) {
+ JavaMethod testMethod = javaSource.newJavaMethod("leadingComment", "void");
+ testMethod.addLine(new StringBuffer("\n").append(leadingComment).toString());
}
-// if (filePath != null) {
-// JavaField field = javaSource.newJavaField("FILE_PATH", String.class, JavaSource.PRIVATE);
-// field.setValue("\"" + filePath + "\"");
-// field.setFinal(true);
-// field.setStatic(true);
-// }
-
if (RowFixture.class.isAssignableFrom(fixtureClass)) {
addTestMethodsForRowFixture(fixtureClass, javaSource);
} else {
@@ -89,7 +95,8 @@
}
if (trailingComment != null) {
- javaSource.addRawJavaSource(trailingComment);
+ JavaMethod testMethod = javaSource.newJavaMethod("trailingComment", "void");
+ testMethod.addLine(new StringBuffer("\n").append(trailingComment).toString());
}
return javaSource;
@@ -106,6 +113,7 @@
Class targetClass = rowFixture.getTargetClass();
JavaMethod method = javaSource.newJavaMethod("testQuery", "void", JavaSource.PUBLIC);
+
method.addThrows(Exception.class);
method.addLine(fixtureClass, " fixture = new ", fixtureClass, "();");
method.addLine(targetClass, "[] values = (", targetClass, "[]) fixture", ".query();");
Modified: trunk/profit/src/com/thoughtworks/tools/profit/tojava/TestTableWriter.java
===================================================================
--- trunk/profit/src/com/thoughtworks/tools/profit/tojava/TestTableWriter.java 2006-11-30 13:15:44 UTC (rev 87)
+++ trunk/profit/src/com/thoughtworks/tools/profit/tojava/TestTableWriter.java 2006-12-14 05:31:57 UTC (rev 88)
@@ -36,13 +36,7 @@
public String getJavaOutputDirectory(String outputDirectory,
Class fixtureClass) {
- // Package fixturePackage = fixtureClass.getPackage();
- // if (fixturePackage == null) {
- // return outputDirectory;
- // }
- // String packageFolder = fixturePackage.getName().replace(".",
- // File.separator);
- return outputDirectory; // + File.separator + packageFolder;
+ return outputDirectory;
}
private String getJavaFileName(Class fixtureClass, int tableNumber) {
Modified: trunk/profit/test/com/thoughtworks/tools/profit/tojava/TestTableTests.java
===================================================================
--- trunk/profit/test/com/thoughtworks/tools/profit/tojava/TestTableTests.java 2006-11-30 13:15:44 UTC (rev 87)
+++ trunk/profit/test/com/thoughtworks/tools/profit/tojava/TestTableTests.java 2006-12-14 05:31:57 UTC (rev 88)
@@ -152,22 +152,40 @@
}
@Test
- public void shouldStoreNotNullComments() {
+ public void shouldCommentsToFitnesseSource() {
+ TestTable table = createTestTableWithComments();
+
+ StringBuffer expect = new StringBuffer();
+ expect.append("some leading comments\n");
+ expect.append("more leading comments\n");
+ expect.append("!|com.thoughtworks.tools.profit.fixtures.MyColumnFixture|\n||\n");
+ expect.append("some trailing comments\n");
+ assertEquals(expect.toString(), table.toFitnesseSource());
+ }
+
+ private TestTable createTestTableWithComments() {
TestTable table = new TestTable("com.thoughtworks.tools.profit.fixtures.MyColumnFixture", new String[0],
new String[0][0]);
- String leadingComment = "//some leading comments\n" + "//more leading comments\n";
+ final String leadingComment = "// some leading comments\n" + "// more leading comments\n";
table.setLeadingComment(leadingComment);
- String trailingComment = "// some trailing comments";
+ final String trailingComment = "// some trailing comments\n";
table.setTrailingComment(trailingComment);
-
- JavaSource actual = table.toJava();
- assertEquals("!|com.thoughtworks.tools.profit.fixtures.MyColumnFixture|\n||\n", table.toFitnesseSource());
-
+ return table;
+ }
+
+ @Test
+ public void shouldCommentsToJavaSource() {
+ TestTable table = createTestTableWithComments();
+
JavaSource expectedClass = createJavaSource("FrontPage.MyColumnFixtureTestCase1");
expectedClass.addImport(JavaQNameImpl.getInstance("com.thoughtworks.tools.profit.fixtures.MyColumnFixture"));
- expectedClass.addRawJavaSource(leadingComment);
- expectedClass.addRawJavaSource(trailingComment);
+ String leadingComment = new StringBuffer("\n").append("// some leading comments\n").append(
+ "// more leading comments\n").toString();
+ expectedClass.newJavaMethod("leadingComment", "void").addLine(leadingComment);
+ String trailingComment = new StringBuffer("\n").append("// some trailing comments\n").toString();
+ expectedClass.newJavaMethod("trailingComment", "void").addLine(trailingComment);
+ JavaSource actual = table.toJava();
assertEquals(expectedClass.toString(), actual.toString());
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|