From 835369381c62ba4ae37ddc47bb8061cd0bc96482 Mon Sep 17 00:00:00 2001 From: allan Date: Mon, 9 Feb 2026 01:28:43 +0000 Subject: [PATCH] chore: more tests --- tests/x-platform/mx_createjob.test.sas | 277 ++++++++++++++++++++++++- 1 file changed, 275 insertions(+), 2 deletions(-) diff --git a/tests/x-platform/mx_createjob.test.sas b/tests/x-platform/mx_createjob.test.sas index 187a329..cb427ba 100644 --- a/tests/x-platform/mx_createjob.test.sas +++ b/tests/x-platform/mx_createjob.test.sas @@ -8,9 +8,13 @@

SAS Macros

@li mx_createjob.sas @li mp_assert.sas + @li mf_getuniquefileref.sas **/ +/** + * Test 1 - Basic job creation with default parameters + */ filename ft15f001 temp; parmcards4; data example1; @@ -18,10 +22,279 @@ parmcards4; run; %put Job executed successfully; ;;;; -%mx_createjob(path=&mcTestAppLoc/jobs,name=testjob,replace=YES) +%mx_createjob(path=&mcTestAppLoc/jobs,name=testjob1,replace=YES) %mp_assert( iftrue=(&syscc=0), - desc=No errors after job creation, + desc=Test 1: No errors after basic job creation, + outds=work.test_results +) + +/** + * Test 2 - Job creation with custom description + */ +filename ft15f001 temp; +parmcards4; + data example2; + set sashelp.cars; + run; +;;;; +%mx_createjob( + path=&mcTestAppLoc/jobs, + name=testjob2, + desc=Custom job description for testing, + replace=YES +) + +%mp_assert( + iftrue=(&syscc=0), + desc=Test 2: Job created with custom description, + outds=work.test_results +) + +/** + * Test 3 - Job creation with precode + */ +filename precode1 temp; +data _null_; + file precode1; + put '%let testvar=PreCodeValue;'; + put '%put &=testvar;'; +run; + +filename ft15f001 temp; +parmcards4; + data example3; + set sashelp.class; + precode_var="&testvar"; + run; +;;;; +%mx_createjob( + path=&mcTestAppLoc/jobs, + name=testjob3, + precode=precode1, + replace=YES +) + +%mp_assert( + iftrue=(&syscc=0), + desc=Test 3: Job created with precode parameter, + outds=work.test_results +) + +filename precode1 clear; + +/** + * Test 4 - Job creation with multiple code filerefs + */ +%let code1=%mf_getuniquefileref(); +%let code2=%mf_getuniquefileref(); + +filename &code1 temp; +data _null_; + file &code1; + put 'data work.part1;'; + put ' set sashelp.class(obs=5);'; + put 'run;'; +run; + +filename &code2 temp; +data _null_; + file &code2; + put 'data work.part2;'; + put ' set sashelp.class(firstobs=6);'; + put 'run;'; +run; + +%mx_createjob( + path=&mcTestAppLoc/jobs, + name=testjob4, + code=&code1 &code2, + replace=YES +) + +%mp_assert( + iftrue=(&syscc=0), + desc=Test 4: Job created with multiple code filerefs, + outds=work.test_results +) + +filename &code1 clear; +filename &code2 clear; + +/** + * Test 5 - Job creation with both precode and multiple code files + */ +%let pre1=%mf_getuniquefileref(); +%let pre2=%mf_getuniquefileref(); +%let main1=%mf_getuniquefileref(); + +filename &pre1 temp; +data _null_; + file &pre1; + put '%let globalvar1=Value1;'; +run; + +filename &pre2 temp; +data _null_; + file &pre2; + put '%let globalvar2=Value2;'; +run; + +filename &main1 temp; +data _null_; + file &main1; + put 'data work.combined;'; + put ' var1="&globalvar1";'; + put ' var2="&globalvar2";'; + put ' output;'; + put 'run;'; +run; + +%mx_createjob( + path=&mcTestAppLoc/jobs, + name=testjob5, + precode=&pre1 &pre2, + code=&main1, + desc=Job with multiple precode and code files, + replace=YES +) + +%mp_assert( + iftrue=(&syscc=0), + desc=Test 5: Job created with multiple precode and code files, + outds=work.test_results +) + +filename &pre1 clear; +filename &pre2 clear; +filename &main1 clear; + +/** + * Test 6 - Job creation with special characters in code + */ +filename ft15f001 temp; +parmcards4; + data example6; + length text $200; + text='Special chars: & % $ # @ !'; + output; + text="Quotes: 'single' and ""double"""; + output; + run; + %put Test with special characters; +;;;; +%mx_createjob( + path=&mcTestAppLoc/jobs, + name=testjob6, + desc=Job with special characters in code, + replace=YES +) + +%mp_assert( + iftrue=(&syscc=0), + desc=Test 6: Job created with special characters in code, + outds=work.test_results +) + +/** + * Test 7 - Job creation with macro code + */ +filename ft15f001 temp; +parmcards4; + %macro testmacro(); + data example7; + set sashelp.class; + where age > 12; + run; + %mend testmacro; + + %testmacro() +;;;; +%mx_createjob( + path=&mcTestAppLoc/jobs, + name=testjob7, + desc=Job containing macro definitions, + replace=YES +) + +%mp_assert( + iftrue=(&syscc=0), + desc=Test 7: Job created with macro code, + outds=work.test_results +) + +/** + * Test 8 - Job creation with empty code (edge case) + */ +filename ft15f001 temp; +data _null_; + file ft15f001; + put '/* Empty job for testing */'; +run; + +%mx_createjob( + path=&mcTestAppLoc/jobs, + name=testjob8, + desc=Job with minimal code, + replace=YES +) + +%mp_assert( + iftrue=(&syscc=0), + desc=Test 8: Job created with minimal code, + outds=work.test_results +) + +/** + * Test 9 - Job creation with long code block + */ +filename ft15f001 temp; +data _null_; + file ft15f001; + put 'data work.longtest;'; + do i=1 to 50; + put ' var' i +(-1) '=' i ';'; + end; + put ' output;'; + put 'run;'; +run; + +%mx_createjob( + path=&mcTestAppLoc/jobs, + name=testjob9, + desc=Job with many variables, + replace=YES +) + +%mp_assert( + iftrue=(&syscc=0), + desc=Test 9: Job created with long code block, + outds=work.test_results +) + +/** + * Test 10 - Replace existing job (replace=YES) + */ +filename ft15f001 temp; +parmcards4; + data example10_v1; + set sashelp.class; + run; +;;;; +%mx_createjob(path=&mcTestAppLoc/jobs,name=testjob10,replace=YES) + +/* Now replace it */ +filename ft15f001 temp; +parmcards4; + data example10_v2; + set sashelp.cars; + run; +;;;; +%mx_createjob(path=&mcTestAppLoc/jobs,name=testjob10,replace=YES) + +%mp_assert( + iftrue=(&syscc=0), + desc=Test 10: Job replaced successfully with replace=YES, outds=work.test_results )