assertequals.sas

Go to the documentation of this file.
00001  
00023 /* change history 
00024    30.06.2008 AM  Behandlung unterschiedlicher Datentypen verbessert 
00025 */ 
00026 %MACRO assertEquals (
00027     i_expected =      
00028    ,i_actual   =      
00029    ,i_desc     =      
00030    ,i_fuzz     =      
00031 );
00032 
00033 %GLOBAL g_inTestcase;
00034 %IF &g_inTestcase EQ 1 %THEN %DO;
00035    %endTestcall;
00036 %END;
00037 %ELSE %IF &g_inTestcase NE 2 %THEN %DO;
00038    %PUT &g_error: assert has to be called after initTestcase;
00039    %RETURN;
00040 %END;
00041 
00042 %LOCAL l_expected;
00043 %LET l_expected = &i_expected;
00044 %LOCAL l_result;
00045 
00046 /* alphanumerical value? */
00047 %IF   %sysfunc(prxmatch("^[0-9]*.?[0-9]*$",&i_expected))=0 
00048    OR %sysfunc(prxmatch("^[0-9]*.?[0-9]*$",&i_actual))=0 %THEN %DO; 
00049    %LET l_result = %eval("&i_expected" NE "&i_actual");
00050 %END; 
00051 /* numerical value and fuzz specified ? */
00052 %ELSE %IF %quote(&i_fuzz) NE %THEN %DO;
00053    %LET l_expected = %quote(&l_expected(+-&i_fuzz)); 
00054    %IF %sysevalf(%sysfunc(abs(%sysevalf(&i_expected - &i_actual))) <= &i_fuzz) 
00055       %THEN %LET l_result = 0;
00056    %ELSE %LET l_result = 1;
00057 %END;
00058 /* numerical without fuzz */
00059 %ELSE %DO;
00060    %IF %quote(&i_expected) = %quote(&i_actual)
00061       %THEN %LET l_result = 0;
00062    %ELSE %LET l_result = 1;
00063 %END;
00064 
00065 %_sasunit_asserts(
00066     i_type     = assertEquals
00067    ,i_expected = &l_expected
00068    ,i_actual   = &i_actual
00069    ,i_desc     = &i_desc
00070    ,i_result   = &l_result
00071 )
00072 %MEND assertEquals;

Generated on Sun Oct 10 14:10:15 2010 for SASUnit Examples by  doxygen 1.5.3