/**
@file
@brief Testing mp_storediffs macro
SAS Macros
@li mp_assert.sas
@li mp_assertcolvals.sas
@li mp_assertdsobs.sas
@li mp_assertscope.sas
@li mp_stackdiffs.sas
@li mp_storediffs.sas
**/
/* first, make some data */
data work.orig work.deleted work.changed work.appended;
set sashelp.electric;
if _n_ le 10 then do;
output work.deleted;
end;
else if _n_ le 20 then do;
output work.orig;
age=99;
output work.changed;
end;
else if _n_ le 30 then do;
year=_n_;
output work.appended;
end;
else stop;
run;
%mp_storediffs(sashelp.electric,work.orig,CUSTOMER YEAR
,delds=work.deleted
,modds=work.changed
,appds=work.appended
,outds=work.final
,mdebug=1
)
%mp_assertscope(SNAPSHOT)
/**
* Deletions test - where record does not exist
*/
%mp_stackdiffs(work.orig
,work.final
,CUSTOMER YEAR
,mdebug=1
,errds=work.errds1
,outmod=work.mod1
,outadd=work.add1
,outdel=work.del1
)
%mp_assertdsobs(work.errds1,
desc=Delete1 - no errors,
test=EQUALS 0
)
%mp_assertdsobs(work.del1,
desc=Delete1 - records populated,
test=EQUALS 10
)
/**
* Deletions test - where record DOES exist
*/
data work.orig2;
set sashelp.electric;
if _n_ le 10;
run;
%mp_stackdiffs(work.orig2
,work.final
,CUSTOMER YEAR
,mdebug=1
,errds=work.errds2
,outmod=work.mod2
,outadd=work.add2
,outdel=work.del2
)
%mp_assertdsobs(work.errds2,
desc=Delete1 - has errors,
test=EQUALS 10
)
%mp_assertdsobs(work.del1,
desc=Delete1 - records not populated,
test=EQUALS 0
)
/**
* Additions test - where record does not exist
*/
data work.orig3;
set work.orig;
stop;
run;
%mp_stackdiffs(work.orig3
,work.final
,CUSTOMER YEAR
,mdebug=1
,errds=work.errds3
,outmod=work.mod3
,outadd=work.add3
,outdel=work.del3
)
%mp_assertdsobs(work.errds3,
desc=Add3 - no errors,
test=EQUALS 0
)
%mp_assertdsobs(work.add3,
desc=Add3 - records populated,
test=EQUALS 10
)
/**
* Additions test - where record does exist
*/
data work.orig4;
set work.orig;
if _n_>35 then stop;
run;
%mp_stackdiffs(work.orig4
,work.final
,CUSTOMER YEAR
,mdebug=1
,errds=work.errds4
,outmod=work.mod4
,outadd=work.add4
,outdel=work.del4
)
%mp_assertdsobs(work.errds4,
desc=Add4 - 5 errors,
test=EQUALS 5
)
%mp_assertdsobs(work.add4,
desc=Add4 - records populated,
test=EQUALS 5
)
/**
* Additions test - where base table has missing vars
*/
data work.orig5;
set work.orig;
drop Coal;
run;
%mp_stackdiffs(work.orig5
,work.final
,CUSTOMER YEAR
,mdebug=1
,errds=work.errds5
,outmod=work.mod5
,outadd=work.add5
,outdel=work.del5
)
%mp_assertdsobs(work.errds5,
desc=Add5 - 10 errors,
test=EQUALS 10
)
%mp_assertdsobs(work.add5,
desc=Add5 - 0 records populated due to structure change,
test=EQUALS 0
)
/**
* Additions test - where append table has missing vars
*/
data work.final6;
set work.final;
drop Coal;
run;
%mp_stackdiffs(work.orig
,work.final6
,CUSTOMER YEAR
,mdebug=1
,errds=work.errds6
,outmod=work.mod6
,outadd=work.add6
,outdel=work.del6
)
%mp_assertdsobs(work.errds6,
desc=Add6 - 0 errors,
test=EQUALS 0
)
%mp_assertdsobs(work.add6,
desc=Add6 - 10 records populated (structure change irrelevant),
test=EQUALS 10
)
%mp_assertscope(COMPARE,Desc=MacVar Scope Check)