mirror of
https://github.com/sasjs/core.git
synced 2026-01-08 01:50:05 +00:00
feat: finishing mp_formats and adding a test, including prefix in mp_init, allowing mp_sortinplace to work when there is no primary key, sand other small fixes
This commit is contained in:
76
tests/crossplatform/mp_getformats.test.sas
Normal file
76
tests/crossplatform/mp_getformats.test.sas
Normal file
@@ -0,0 +1,76 @@
|
||||
/**
|
||||
@file
|
||||
@brief Testing mp_getformats.sas macro
|
||||
|
||||
<h4> SAS Macros </h4>
|
||||
@li mf_mkdir.sas
|
||||
@li mp_getformats.sas
|
||||
@li mp_assert.sas
|
||||
|
||||
**/
|
||||
|
||||
/**
|
||||
* Test - setup
|
||||
*/
|
||||
|
||||
%mf_mkdir(&sasjswork/path1)
|
||||
%mf_mkdir(&sasjswork/path2)
|
||||
|
||||
libname path1 "&sasjswork/path1";
|
||||
libname path2 "&sasjswork/path2";
|
||||
|
||||
|
||||
PROC FORMAT library=path1;
|
||||
value whichpath 0 = 'path1' other='big fat problem if not path1';
|
||||
PROC FORMAT library=path2;
|
||||
value whichpath 0 = 'path2' other='big fat problem if not path2';
|
||||
RUN;
|
||||
|
||||
|
||||
/** run with path1 path2 FMTSEARCH */
|
||||
options insert=(fmtsearch=(path1 path2));
|
||||
data _null_;
|
||||
test=0;
|
||||
call symputx('test1',put(test,whichpath.));
|
||||
run;
|
||||
%mp_assert(
|
||||
iftrue=("&test1"="path1"),
|
||||
desc=Check correct format is applied,
|
||||
outds=work.test_results
|
||||
)
|
||||
%mp_getformats(fmtlist=WHICHPATH,outsummary=sum,outdetail=detail1)
|
||||
%let tst1=0;
|
||||
data _null_;
|
||||
set detail1;
|
||||
if fmtname='WHICHPATH' and start='**OTHER**' then call symputx('tst1',label);
|
||||
putlog (_all_)(=);
|
||||
run;
|
||||
%mp_assert(
|
||||
iftrue=("&tst1"="big fat problem if not path1"),
|
||||
desc=Check correct detail results are applied,
|
||||
outds=work.test_results
|
||||
)
|
||||
|
||||
/** run with path2 path1 FMTSEARCH */
|
||||
options insert=(fmtsearch=(path2 path1));
|
||||
data _null_;
|
||||
test=0;
|
||||
call symputx('test2',put(test,whichpath.));
|
||||
run;
|
||||
%mp_assert(
|
||||
iftrue=("&test2"="path2"),
|
||||
desc=Check correct format is applied,
|
||||
outds=work.test_results
|
||||
)
|
||||
%mp_getformats(fmtlist=WHICHPATH,outsummary=sum,outdetail=detail2)
|
||||
%let tst2=0;
|
||||
data _null_;
|
||||
set detail1;
|
||||
if fmtname='WHICHPATH' and start='**OTHER**' then call symputx('tst2',label);
|
||||
putlog (_all_)(=);
|
||||
run;
|
||||
%mp_assert(
|
||||
iftrue=("&tst2"="big fat problem if not path2"),
|
||||
desc=Check correct detail results are applied,
|
||||
outds=work.test_results
|
||||
)
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
%let initial_value=&sasjs_init_num;
|
||||
|
||||
%mp_init();
|
||||
%mp_init()
|
||||
|
||||
%mp_assert(
|
||||
iftrue=("&initial_value"="&sasjs_init_num"),
|
||||
|
||||
@@ -39,4 +39,31 @@ run;
|
||||
),
|
||||
desc=Check if sort was appplied,
|
||||
outds=work.test_results
|
||||
)
|
||||
|
||||
/** Test 2 - table without PK */
|
||||
proc sql;
|
||||
create table work.example2 as
|
||||
select * from sashelp.classfit;
|
||||
%mp_sortinplace(work.example2)
|
||||
%mp_assert(
|
||||
iftrue=(
|
||||
%str(&syscc)=%str(0)
|
||||
),
|
||||
desc=Ensure no errors when no key exists,
|
||||
outds=work.test_results
|
||||
)
|
||||
|
||||
%let test2=0;
|
||||
data _null_;
|
||||
set work.example2;
|
||||
call symputx('test2',name);
|
||||
stop;
|
||||
run;
|
||||
%mp_assert(
|
||||
iftrue=(
|
||||
%str(&test2)=%str(Alfred)
|
||||
),
|
||||
desc=Check if sort was appplied when no index exists,
|
||||
outds=work.test_results
|
||||
)
|
||||
@@ -61,4 +61,42 @@ run;
|
||||
checkvals=work.check.val,
|
||||
desc=All values have a match,
|
||||
test=ALLVALS
|
||||
)
|
||||
|
||||
/* Test for when there are no actual changes */
|
||||
data work.orig work.deleted work.changed work.appended;
|
||||
set sashelp.class;
|
||||
output work.orig;
|
||||
run;
|
||||
%mp_storediffs(sashelp.class,work.orig,NAME
|
||||
,delds=work.deleted
|
||||
,modds=work.changed
|
||||
,appds=work.appended
|
||||
,outds=work.final2
|
||||
,mdebug=1
|
||||
)
|
||||
%mp_assertdsobs(work.final2,
|
||||
desc=No changes produces 0 records,
|
||||
test=EQUALS 0,
|
||||
outds=work.test_results
|
||||
)
|
||||
|
||||
/* Test for deletes only */
|
||||
data work.orig work.deleted work.changed work.appended;
|
||||
set sashelp.class;
|
||||
output work.orig;
|
||||
if _n_>5 then output work.deleted;
|
||||
run;
|
||||
|
||||
%mp_storediffs(sashelp.class,work.orig,NAME
|
||||
,delds=work.deleted
|
||||
,modds=work.changed
|
||||
,appds=work.appended
|
||||
,outds=work.final3
|
||||
,mdebug=1
|
||||
)
|
||||
%mp_assertdsobs(work.final3,
|
||||
desc=Delete has 70 records,
|
||||
test=EQUALS 70,
|
||||
outds=work.test_results
|
||||
)
|
||||
Reference in New Issue
Block a user