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- --%suite («packageName »)
53- «IF !context .suitePath .empty »
54- --%suitepath («context .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- --%context («unit »)
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 ("\t PROCEDURE " );
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 ("\t PROCEDURE " );
124+ sb .append (procedureName );
125+ sb .append (" IS\n " );
126+ sb .append ("\t \t l_actual INTEGER := 0;\n " );
127+ sb .append ("\t \t l_expected INTEGER := 1;\n " );
128+ sb .append ("\t BEGIN\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 \t ut.expect(l_actual).to_equal(l_expected);\n " );
141+ sb .append ("\t END " );
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