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