00001
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 %MACRO assertLogMsg (
00036 i_logmsg =
00037 ,i_desc =
00038 ,i_not = 0
00039 );
00040
00041 %GLOBAL g_inTestcase;
00042 %IF &g_inTestcase EQ 1 %THEN %DO;
00043 %endTestcall;
00044 %END;
00045 %ELSE %IF &g_inTestcase NE 2 %THEN %DO;
00046 %PUT &g_error: assert must be called after initTestcase;
00047 %RETURN;
00048 %END;
00049
00050 PROC SQL NOPRINT;
00051 %LOCAL l_casid;
00052
00053 SELECT max(cas_id) INTO :l_casid FROM target.cas WHERE cas_scnid = &g_scnid;
00054 QUIT;
00055
00056 %IF &l_casid = . OR &l_casid = %THEN %DO;
00057 %PUT &g_error: assert must not be called before initTestcase;
00058 %RETURN;
00059 %END;
00060
00061
00062 %LOCAL l_msg_found; %LET l_msg_found=0;
00063 DATA _null_;
00064 RETAIN pattern_id;
00065 IF _n_=1 THEN DO;
00066 pattern_id = prxparse("/%upcase(&i_logmsg)/");
00067 END;
00068 INFILE "&g_log/%sysfunc(putn(&g_scnid,z3.))_%sysfunc(putn(&l_casid,z3.)).log" END=eof TRUNCOVER;
00069 INPUT logrec $char256.;
00070 logrec = upcase(logrec);
00071 IF prxmatch (pattern_id, logrec) THEN DO;
00072 call symput ('l_msg_found', '1');
00073 END;
00074 RUN;
00075
00076 %LOCAL l_actual;
00077 %IF &l_msg_found %THEN %DO;
00078 %LET l_actual = 1;
00079 %END;
00080 %ELSE %DO;
00081 %LET l_actual = 2;
00082 %END;
00083
00084 %LOCAL l_expected l_assert_failed;
00085 %IF &i_not %THEN %DO;
00086 %LET l_expected = 2&i_logmsg;
00087 %LET l_assert_failed = &l_msg_found;
00088 %END;
00089 %ELSE %DO;
00090 %LET l_expected = 1&i_logmsg;
00091 %LET l_assert_failed = %eval(NOT &l_msg_found);
00092 %END;
00093
00094 %_sasunit_asserts(
00095 i_type = assertLogMsg
00096 ,i_expected = %str(&l_expected)
00097 ,i_actual = %str(&l_actual)
00098 ,i_desc = &i_desc
00099 ,i_result = &l_assert_failed
00100 )
00101
00102 %MEND assertLogMsg;