Macros for SAS Application Developers
https://github.com/sasjs/core
Loading...
Searching...
No Matches
mx_createjob.test.sas
Go to the documentation of this file.
1/**
2 @file
3 @brief Testing mx_createjob.sas macro
4
5 Be sure to run <code>%let mcTestAppLoc=/Public/temp/macrocore;</code> when
6 running in Studio
7
8 <h4> SAS Macros </h4>
9 @li mx_createjob.sas
10 @li mp_assert.sas
11 @li mf_getuniquefileref.sas
12 @li mp_assertscope.sas
13
14**/
15
16/**
17 * Test 1 - Basic job creation with default parameters
18 * Also checking for scope leakage
19 */
20filename ft15f001 temp;
21parmcards4;
22 data example1;
23 set sashelp.class;
24 run;
25 %put Job executed successfully;
26;;;;
27%mp_assertscope(SNAPSHOT)
28%mx_createjob(path=&mcTestAppLoc/jobs,name=testjob1,replace=YES)
29%mp_assertscope(COMPARE)
30
31%mp_assert(
32 iftrue=(&syscc=0),
33 desc=Test 1: No errors after basic job creation,
34 outds=work.test_results
35)
36
37/**
38 * Test 2 - Job creation with custom description
39 */
40filename ft15f001 temp;
41parmcards4;
42 data example2;
43 set sashelp.cars;
44 run;
45;;;;
46%mx_createjob(
47 path=&mcTestAppLoc/jobs,
48 name=testjob2,
49 desc=Custom job description for testing,
50 replace=YES
51)
52
53%mp_assert(
54 iftrue=(&syscc=0),
55 desc=Test 2: Job created with custom description,
56 outds=work.test_results
57)
58
59/**
60 * Test 3 - Job creation with precode
61 */
62filename precode1 temp;
63data _null_;
64 file precode1;
65 put '%let testvar=PreCodeValue;';
66 put '%put &=testvar;';
67run;
68
69filename ft15f001 temp;
70parmcards4;
71 data example3;
72 set sashelp.class;
73 precode_var="&testvar";
74 run;
75;;;;
76%mx_createjob(
77 path=&mcTestAppLoc/jobs,
78 name=testjob3,
79 precode=precode1,
80 replace=YES
81)
82
83%mp_assert(
84 iftrue=(&syscc=0),
85 desc=Test 3: Job created with precode parameter,
86 outds=work.test_results
87)
88
89filename precode1 clear;
90
91/**
92 * Test 4 - Job creation with multiple code filerefs
93 */
94%let code1=%mf_getuniquefileref();
95%let code2=%mf_getuniquefileref();
96
97filename &code1 temp;
98data _null_;
99 file &code1;
100 put 'data work.part1;';
101 put ' set sashelp.class(obs=5);';
102 put 'run;';
103run;
104
105filename &code2 temp;
106data _null_;
107 file &code2;
108 put 'data work.part2;';
109 put ' set sashelp.class(firstobs=6);';
110 put 'run;';
111run;
112
113%mx_createjob(
114 path=&mcTestAppLoc/jobs,
115 name=testjob4,
116 code=&code1 &code2,
117 replace=YES
118)
119
120%mp_assert(
121 iftrue=(&syscc=0),
122 desc=Test 4: Job created with multiple code filerefs,
123 outds=work.test_results
124)
125
126filename &code1 clear;
127filename &code2 clear;
128
129/**
130 * Test 5 - Job creation with both precode and multiple code files
131 */
132%let pre1=%mf_getuniquefileref();
133%let pre2=%mf_getuniquefileref();
134%let main1=%mf_getuniquefileref();
135
136filename &pre1 temp;
137data _null_;
138 file &pre1;
139 put '%let globalvar1=Value1;';
140run;
141
142filename &pre2 temp;
143data _null_;
144 file &pre2;
145 put '%let globalvar2=Value2;';
146run;
147
148filename &main1 temp;
149data _null_;
150 file &main1;
151 put 'data work.combined;';
152 put ' var1="&globalvar1";';
153 put ' var2="&globalvar2";';
154 put ' output;';
155 put 'run;';
156run;
157
158%mx_createjob(
159 path=&mcTestAppLoc/jobs,
160 name=testjob5,
161 precode=&pre1 &pre2,
162 code=&main1,
163 desc=Job with multiple precode and code files,
164 replace=YES
165)
166
167%mp_assert(
168 iftrue=(&syscc=0),
169 desc=Test 5: Job created with multiple precode and code files,
170 outds=work.test_results
171)
172
173filename &pre1 clear;
174filename &pre2 clear;
175filename &main1 clear;
176
177/**
178 * Test 6 - Job creation with special characters in code
179 */
180filename ft15f001 temp;
181parmcards4;
182 data example6;
183 length text $200;
184 text='Special chars: & % $ # @ !';
185 output;
186 text="Quotes: 'single' and ""double""";
187 output;
188 run;
189 %put Test with special characters;
190;;;;
191%mx_createjob(
192 path=&mcTestAppLoc/jobs,
193 name=testjob6,
194 desc=Job with special characters in code,
195 replace=YES
196)
197
198%mp_assert(
199 iftrue=(&syscc=0),
200 desc=Test 6: Job created with special characters in code,
201 outds=work.test_results
202)
203
204/**
205 * Test 7 - Job creation with macro code
206 */
207filename ft15f001 temp;
208parmcards4;
209 %macro testmacro();
210 data example7;
211 set sashelp.class;
212 where age > 12;
213 run;
214 %mend testmacro;
215
216 %testmacro()
217;;;;
218%mx_createjob(
219 path=&mcTestAppLoc/jobs,
220 name=testjob7,
221 desc=Job containing macro definitions,
222 replace=YES
223)
224
225%mp_assert(
226 iftrue=(&syscc=0),
227 desc=Test 7: Job created with macro code,
228 outds=work.test_results
229)
230
231/**
232 * Test 8 - Job creation with empty code (edge case)
233 */
234filename ft15f001 temp;
235data _null_;
236 file ft15f001;
237 put '/* Empty job for testing */';
238run;
239
240%mx_createjob(
241 path=&mcTestAppLoc/jobs,
242 name=testjob8,
243 desc=Job with minimal code,
244 replace=YES
245)
246
247%mp_assert(
248 iftrue=(&syscc=0),
249 desc=Test 8: Job created with minimal code,
250 outds=work.test_results
251)
252
253/**
254 * Test 9 - Job creation with long code block
255 */
256filename ft15f001 temp;
257data _null_;
258 file ft15f001;
259 put 'data work.longtest;';
260 do i=1 to 50;
261 put ' var' i +(-1) '=' i ';';
262 end;
263 put ' output;';
264 put 'run;';
265run;
266
267%mx_createjob(
268 path=&mcTestAppLoc/jobs,
269 name=testjob9,
270 desc=Job with many variables,
271 replace=YES
272)
273
274%mp_assert(
275 iftrue=(&syscc=0),
276 desc=Test 9: Job created with long code block,
277 outds=work.test_results
278)
279
280/**
281 * Test 10 - Replace existing job (replace=YES)
282 */
283filename ft15f001 temp;
284parmcards4;
285 data example10_v1;
286 set sashelp.class;
287 run;
288;;;;
289%mx_createjob(path=&mcTestAppLoc/jobs,name=testjob10,replace=YES)
290
291/* Now replace it */
292filename ft15f001 temp;
293parmcards4;
294 data example10_v2;
295 set sashelp.cars;
296 run;
297;;;;
298%mx_createjob(path=&mcTestAppLoc/jobs,name=testjob10,replace=YES)
299
300%mp_assert(
301 iftrue=(&syscc=0),
302 desc=Test 10: Job replaced successfully with replace=YES,
303 outds=work.test_results
304)