SASUnit Examples  Version 1.5.0
assertequals.sas
Go to the documentation of this file.
1 
30 %MACRO assertEquals (i_expected =
31  ,i_actual =
32  ,i_desc = Compare Values
33  ,i_fuzz =
34  );
35 
36  /*-- verify correct sequence of calls-----------------------------------------*/
37  %GLOBAL g_inTestcase;
38  %IF &g_inTestcase EQ 1 %THEN %DO;
39  %endTestcall;
40  %END;
41  %ELSE %IF &g_inTestcase NE 2 %THEN %DO;
42  %PUT &g_error.(SASUNIT): assert must be called after initTestcase;
43  %RETURN;
44  %END;
45 
46  %LOCAL l_expected;
47  %LET l_expected = &i_expected;
48  %LOCAL l_result;
49 
50  /* alphanumerical value? */
51  %IF %sysfunc(prxmatch("^[0-9]*.?[0-9]*$",&i_expected))=0
52  OR %sysfunc(prxmatch("^[0-9]*.?[0-9]*$",&i_actual))=0 %THEN %DO;
53  %LET l_result = %eval(("&i_expected" NE "&i_actual")*2);
54  %END;
55  /* numerical value and fuzz specified ? */
56  %ELSE %IF %quote(&i_fuzz) NE %THEN %DO;
57  %LET l_expected = %quote(&l_expected(+-&i_fuzz));
58  %IF %sysevalf(%sysfunc(abs(%sysevalf(&i_expected - &i_actual))) <= &i_fuzz)
59  %THEN %LET l_result = 0;
60  %ELSE %LET l_result = 2;
61  %END;
62  /* numerical without fuzz */
63  %ELSE %DO;
64  %IF %quote(&i_expected) = %quote(&i_actual)
65  %THEN %LET l_result = 0;
66  %ELSE %LET l_result = 2;
67  %END;
68 
69  %_asserts(
70  i_type = assertEquals
71  ,i_expected = &l_expected
72  ,i_actual = &i_actual
73  ,i_desc = &i_desc
74  ,i_result = &l_result
75  )
76 %MEND assertEquals;