Skip to content

Commit 64945f0

Browse files
convert TestTemplate to Java
1 parent 448dbd4 commit 64945f0

1 file changed

Lines changed: 142 additions & 107 deletions

File tree

sqldev/src/main/java/org/utplsql/sqldev/oddgen/TestTemplate.java

Lines changed: 142 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -13,117 +13,152 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package org.utplsql.sqldev.oddgen
16+
package org.utplsql.sqldev.oddgen;
1717

18-
import java.time.LocalDateTime
19-
import java.time.format.DateTimeFormatter
20-
import java.util.List
21-
import org.utplsql.sqldev.dal.UtplsqlDao
22-
import org.utplsql.sqldev.model.oddgen.GenContext
18+
import java.time.LocalDateTime;
19+
import java.time.format.DateTimeFormatter;
20+
import java.util.List;
2321

24-
class TestTemplate {
25-
var GenContext context
26-
var UtplsqlDao dao
27-
var List<String> units
28-
var dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
29-
var today = dateTimeFormatter.format(LocalDateTime.now())
30-
31-
new(GenContext context) {
32-
this.context = context
33-
dao = new UtplsqlDao(context.conn)
34-
units = dao.units(context.objectType, context.objectName)
35-
}
22+
import org.utplsql.sqldev.dal.UtplsqlDao;
23+
import org.utplsql.sqldev.model.StringTools;
24+
import org.utplsql.sqldev.model.oddgen.GenContext;
3625

37-
def replaceTabsWithSpaces(CharSequence input) {
38-
val spaces = String.format("%1$"+context.indentSpaces+"s", "")
39-
return input.toString.replace("\t", spaces)
40-
}
41-
42-
def generateSpec() {
43-
val ret = '''
44-
«val objectName = context.objectName.toLowerCase»
45-
«val packageName = '''«context.testPackagePrefix»«objectName»«context.testPackageSuffix»'''»
46-
CREATE OR REPLACE PACKAGE «packageName» IS
47-
48-
«IF context.generateComments»
49-
/* generated by utPLSQL for SQL Developer on «today» */
26+
public class TestTemplate {
27+
private GenContext context;
28+
private UtplsqlDao dao;
29+
private List<String> units;
30+
private DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
31+
private String today = dateTimeFormatter.format(LocalDateTime.now());
5032

51-
«ENDIF»
52-
--%suitepackageName»)
53-
«IF !context.suitePath.empty»
54-
--%suitepathcontext.suitePath»)
55-
«ENDIF»
56-
57-
«FOR u : units»
58-
«val unit = u.toLowerCase»
59-
«IF context.numberOfTestsPerUnit > 1 && (context.objectType == "PACKAGE" || context.objectType == "TYPE"
60-
--%contextunit»)
33+
public TestTemplate(final GenContext context) {
34+
this.context = context;
35+
dao = new UtplsqlDao(context.getConn());
36+
units = dao.units(context.getObjectType(), context.getObjectName());
37+
}
6138

62-
«ENDIF»
63-
«FOR i : 1 .. context.numberOfTestsPerUnit»
64-
--%test
65-
«IF context.disableTests»
66-
--%disabled
67-
«ENDIF»
68-
PROCEDURE «context.testUnitPrefix»«unit»«context.testUnitSuffix»«IF context.numberOfTestsPerUnit > 1»«i»«ENDIF»;
39+
public String generateSpec() {
40+
final StringBuilder sb = new StringBuilder();
41+
final String objectName = context.getObjectName().toLowerCase();
42+
final String packageName = context.getTestPackagePrefix() + objectName + context.getTestPackageSuffix();
43+
sb.append("CREATE OR REPLACE PACKAGE ");
44+
sb.append(packageName);
45+
sb.append(" IS\n\n");
46+
if (context.isGenerateComments()) {
47+
sb.append("\t/* generated by utPLSQL for SQL Developer on ");
48+
sb.append(today);
49+
sb.append(" */\n\n");
50+
}
51+
sb.append("\t--%suite(");
52+
sb.append(packageName);
53+
sb.append(")\n");
54+
if (!context.getSuitePath().isEmpty()) {
55+
sb.append("\t--%suitepath(");
56+
sb.append(context.getSuitePath());
57+
sb.append(")\n\n");
58+
}
59+
for (final String u : units) {
60+
final String unit = u.toLowerCase();
61+
if (context.getNumberOfTestsPerUnit() > 1
62+
&& ("PACKAGE".equals(context.getObjectType()) || "TYPE".equals(context.getObjectType()))) {
63+
sb.append("\t--%context(");
64+
sb.append(unit);
65+
sb.append(")\n\n");
66+
}
67+
for (int i=1; i <= context.getNumberOfTestsPerUnit(); i++) {
68+
sb.append("\t--%test\n");
69+
if (context.isDisableTests()) {
70+
sb.append("\t--%disabled\n");
71+
}
72+
sb.append("\tPROCEDURE ");
73+
sb.append(context.getTestUnitPrefix());
74+
sb.append(unit);
75+
sb.append(context.getTestUnitSuffix());
76+
if (context.getNumberOfTestsPerUnit() > 1) {
77+
sb.append(i);
78+
}
79+
sb.append(";\n\n");
80+
}
81+
if (context.getNumberOfTestsPerUnit() > 1
82+
&& ("PACKAGE".equals(context.getObjectType()) || "TYPE".equals(context.getObjectType()))) {
83+
sb.append("\t--%endcontext\n\n");
84+
}
85+
}
86+
sb.append("END ");
87+
sb.append(packageName);
88+
sb.append(";\n");
89+
sb.append("/");
90+
final String ret = sb.toString();
91+
return StringTools.replaceTabsWithSpaces(ret, context.getIndentSpaces());
92+
}
6993

70-
«ENDFOR»
71-
«IF context.numberOfTestsPerUnit > 1 && (context.objectType == "PACKAGE" || context.objectType == "TYPE"
72-
--%endcontext
94+
public String generateBody() {
95+
StringBuilder sb = new StringBuilder();
96+
final String objectName = context.getObjectName().toLowerCase();
97+
sb.append("CREATE OR REPLACE PACKAGE BODY ");
98+
sb.append(context.getTestPackagePrefix());
99+
sb.append(objectName);
100+
sb.append(context.getTestPackageSuffix());
101+
sb.append(" IS\n\n");
102+
if (context.isGenerateComments()) {
103+
sb.append("\t/* generated by utPLSQL for SQL Developer on ");
104+
sb.append(today);
105+
sb.append(" */\n\n");
106+
}
107+
for (final String u : units) {
108+
final String unit = u.toLowerCase();
109+
for (int i=1; i <= context.getNumberOfTestsPerUnit(); i++) {
110+
final String procedureName = context.getTestUnitPrefix() + unit + context.getTestUnitSuffix()
111+
+ (context.getNumberOfTestsPerUnit() > 1 ? String.valueOf(i) : "");
112+
if (context.isGenerateComments()) {
113+
sb.append("\t--\n");
114+
sb.append("\t-- test ");
115+
sb.append(unit);
116+
if (context.getNumberOfTestsPerUnit() > 1) {
117+
sb.append(" case ");
118+
sb.append(i);
119+
sb.append(": ...\n");
120+
}
121+
sb.append("\t--\n");
122+
}
123+
sb.append("\tPROCEDURE ");
124+
sb.append(procedureName);
125+
sb.append(" IS\n");
126+
sb.append("\t\tl_actual INTEGER := 0;\n");
127+
sb.append("\t\tl_expected INTEGER := 1;\n");
128+
sb.append("\tBEGIN\n");
129+
if (context.isGenerateComments()) {
130+
sb.append("\t\t-- populate actual\n");
131+
sb.append("\t\t-- ");
132+
sb.append(objectName);
133+
sb.append(".");
134+
sb.append(unit);
135+
sb.append(";\n\n");
136+
sb.append("\t\t-- populate expected\n");
137+
sb.append("\t\t-- ...\n\n");
138+
sb.append("\t\t-- assert\n");
139+
}
140+
sb.append("\t\tut.expect(l_actual).to_equal(l_expected);\n");
141+
sb.append("\tEND ");
142+
sb.append(procedureName);
143+
sb.append(";\n\n");
144+
}
145+
}
146+
sb.append("END ");
147+
sb.append(context.getTestPackagePrefix());
148+
sb.append(objectName);
149+
sb.append(context.getTestPackageSuffix());
150+
sb.append(";\n");
151+
sb.append("/");
152+
final String ret = sb.toString();
153+
return StringTools.replaceTabsWithSpaces(ret, context.getIndentSpaces());
154+
}
73155

74-
«ENDIF»
75-
«ENDFOR»
76-
END «packageName»;
77-
/
78-
'''
79-
return ret.replaceTabsWithSpaces
80-
}
81-
82-
def generateBody() {
83-
val ret = '''
84-
«val objectName = context.objectName.toLowerCase»
85-
CREATE OR REPLACE PACKAGE BODY «context.testPackagePrefix»«objectName»«context.testPackageSuffix» IS
86-
87-
«IF context.generateComments»
88-
/* generated by utPLSQL for SQL Developer on «today» */
89-
90-
«ENDIF»
91-
«FOR u : units»
92-
«val unit = u.toLowerCase»
93-
«FOR i : 1 .. context.numberOfTestsPerUnit»
94-
«val procedureName = '''«context.testUnitPrefix»«unit»«context.testUnitSuffix»«IF context.numberOfTestsPerUnit > 1»«i»«ENDIF»'''»
95-
«IF context.generateComments»
96-
--
97-
-- test «unit»«IF context.numberOfTestsPerUnit > 0» case «i»: ...«ENDIF»
98-
--
99-
«ENDIF»
100-
PROCEDURE «procedureName» IS
101-
l_actual INTEGER := 0;
102-
l_expected INTEGER := 1;
103-
BEGIN
104-
«IF context.generateComments»
105-
-- populate actual
106-
-- «objectName».«unit»;
107-
108-
-- populate expected
109-
-- ...
110-
111-
-- assert
112-
«ENDIF»
113-
ut.expect(l_actual).to_equal(l_expected);
114-
END «procedureName»;
115-
116-
«ENDFOR»
117-
«ENDFOR»
118-
END «context.testPackagePrefix»«objectName»«context.testPackageSuffix»;
119-
/
120-
'''
121-
return ret.replaceTabsWithSpaces
122-
}
123-
124-
def generate() '''
125-
«generateSpec»
126-
127-
«generateBody»
128-
'''
129-
}
156+
public CharSequence generate() {
157+
StringBuilder sb = new StringBuilder();
158+
sb.append(generateSpec());
159+
sb.append("\n\n");
160+
sb.append(generateBody());
161+
sb.append('\n');
162+
return sb;
163+
}
164+
}

0 commit comments

Comments
 (0)