SASUnit Examples  Version 1.2.1
assertequals.sas
Go to the documentation of this file.
1 
27 /* change history
28  29.01.2013 KL changed link from _sasunit_doc.sas to Sourceforge SASUnit User's Guide
29  30.06.2008 AM Behandlung unterschiedlicher Datentypen verbessert
30 */
31 %MACRO assertEquals (
32  i_expected =
33  ,i_actual =
34  ,i_desc =
35  ,i_fuzz =
36 );
37 
38 %GLOBAL g_inTestcase;
39 %IF &g_inTestcase EQ 1 %THEN %DO;
40  %endTestcall;
41 %END;
42 %ELSE %IF &g_inTestcase NE 2 %THEN %DO;
43  %PUT &g_error: assert has to be called after initTestcase;
44  %RETURN;
45 %END;
46 
47 %LOCAL l_expected;
48 %LET l_expected = &i_expected;
49 %LOCAL l_result;
50 
51 /* alphanumerical value? */
52 %IF %sysfunc(prxmatch("^[0-9]*.?[0-9]*$",&i_expected))=0
53  OR %sysfunc(prxmatch("^[0-9]*.?[0-9]*$",&i_actual))=0 %THEN %DO;
54  %LET l_result = %eval("&i_expected" NE "&i_actual");
55 %END;
56 /* numerical value and fuzz specified ? */
57 %ELSE %IF %quote(&i_fuzz) NE %THEN %DO;
58  %LET l_expected = %quote(&l_expected(+-&i_fuzz));
59  %IF %sysevalf(%sysfunc(abs(%sysevalf(&i_expected - &i_actual))) <= &i_fuzz)
60  %THEN %LET l_result = 0;
61  %ELSE %LET l_result = 1;
62 %END;
63 /* numerical without fuzz */
64 %ELSE %DO;
65  %IF %quote(&i_expected) = %quote(&i_actual)
66  %THEN %LET l_result = 0;
67  %ELSE %LET l_result = 1;
68 %END;
69 
70 %_sasunit_asserts(
71  i_type = assertEquals
72  ,i_expected = &l_expected
73  ,i_actual = &i_actual
74  ,i_desc = &i_desc
75  ,i_result = &l_result
76 )
77 %MEND assertEquals;