32 %MACRO assertRecordCount(i_libref         = 
 
   37                         ,i_desc           = Check 
for a specific number of records
 
   42    %IF &g_inTestcase EQ 1 %THEN %DO;
 
   45    %ELSE %IF &g_inTestcase NE 2 %THEN %DO;
 
   46       %PUT &g_error.(SASUNIT): assert must be called after initTestcase;
 
   50    %LOCAL l_dsname l_result l_actual;
 
   51    %LET l_dsname   = %sysfunc(catx(., &i_libref., &i_memname.));
 
   54    %LET i_operator = %sysfunc(upcase(&i_operator.));
 
   57    %*************************************************************;
 
   58    %*** Check preconditions                                   ***;
 
   59    %*************************************************************;
 
   61    %*** check 
for valid libref und existence of data set***;
 
   62    %IF ((%sysfunc (libref (&i_libref.)) NE 0) or (%sysfunc(exist(&l_dsname)) EQ 0)) %THEN %DO;
 
   64       %LET l_errmsg =Libref is invalid or table does not exist;
 
   68    %*** check 
for valid parameter i_recordsExp ***;
 
   70       IF (INPUT(&i_recordsExp., 32.) =.)  then call symput('l_actual',"-3");
 
   71       ELSE IF (&i_recordsExp. < 0) then call symput('l_actual',"-4");;
 
   74    %IF (&l_actual. EQ -3 OR &l_actual. EQ -4) %THEN %DO;
 
   75       %LET l_errmsg =Parameter i_recordsExp does not contain a number;
 
   79    %*** check for valid parameter i_operator***;
 
   81      IF NOT("&i_operator." IN ("EQ", "NE", "GT", "LT", "GE", "LE", "=", "<", ">", ">=", "<=", "~=")) THEN call symput('l_actual',"-5");
 
   83    %IF (&l_actual. EQ -5) %THEN %DO;
 
   84       %LET l_errmsg =Parameter i_opertaor contains an invalid operator;
 
   88    %*************************************************************;
 
   90    %*************************************************************;
 
   92    %*** Determine results***;
 
   94       select count(*) into :l_actual 
 
   99    %IF (&SQLRC. NE 0) %THEN %DO;
 
  105    %*** Determine results***;
 
  106    %IF (&l_actual. &i_operator. &i_recordsExp. AND &l_actual. NE -999) %THEN %DO;
 
  111    *** update result in test database ***;
 
  112    %_asserts(i_type     = assertRecordCount
 
  113             ,i_expected = %str(&i_operator. &i_recordsExp.)
 
  114             ,i_actual   = %str(&l_actual.)
 
  116             ,i_result   = &l_result.
 
  117             ,i_errmsg   = &l_errmsg.;