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.;