Veröffentlicht am :
Macro CREATION_INTERNE

Macro assertTrue - Überprüfen, ob eine Bedingung wahr ist

Dieser Code ist auch verfügbar auf: English Español Français
Dieses Makro, 'assertTrue', ist Teil des SASUNIT-Frameworks und wurde entwickelt, um zu überprüfen, ob eine gegebene Bedingung als 'wahr' ausgewertet wird. Für numerische Typen wird ein Wert von 0 als falsch angesehen, während jeder andere Wert wahr ist. Für Zeichenfolgentypen werden eine leere oder nur aus Leerzeichen bestehende Zeichenfolge sowie das Wort 'false' (Groß- und Kleinschreibung wird ignoriert) als falsch angesehen. Alle anderen Zeichenfolgen sind wahr. Das Makro initialisiert lokale Variablen, überprüft die Aufrufsequenz über %_checkCallingSequence und fährt dann mit der Auswertung des Parameters i_cond entsprechend seinem Typ (numerisch oder Zeichenfolge) fort. Schließlich ruft es das interne Makro %_asserts auf, um das Ergebnis der Assertion zu protokollieren.
Datenanalyse

Type : CREATION_INTERNE


Der Code bewertet die Eingabevariable 'i_cond', die eine als Parameter übergebene Bedingung ist. Er liest keine Daten direkt aus externen Dateien oder Datenbanken, sondern verarbeitet einen internen Wert oder Ausdruck im Skript.

1 Codeblock
Macro SAS
Erklärung :
Dieser Block definiert das Makro 'assertTrue' mit zwei Parametern: 'i_cond' (die zu bewertende Bedingung) und 'i_desc' (eine Beschreibung der Assertion). Er deklariert die globale Variable 'g_inTestCase' und ruft '%endTestCall' zur Nachrichtenverwaltung auf. Das Makro führt dann eine Überprüfung der Aufrufsequenz über '%_checkCallingSequence' durch, um sicherzustellen, dass es korrekt in einem Assertion-Kontext verwendet wird. Lokale Variablen werden deklariert, um Zwischenergebnisse der Auswertung zu speichern.
Kopiert!
1%MACRO assertTrue (
2 i_cond =
3 ,i_desc =
4);
5 
6%GLOBAL g_inTestCase;
7%endTestCall(i_messageStyle=NOTE);
8%IF %_checkCallingSequence(i_callerType=assert) NE 0 %THEN %DO;
9 %RETURN;
10%END;
11 
12%LOCAL l_result l_expected l_actual;
2 Codeblock
Macro SAS (Logique conditionnelle)
Erklärung :
Dieser Block bewertet die Bedingung 'i_cond', wenn sie vom Typ Zeichenfolge ist, bestimmt durch das Makro '%datatyp'. Er setzt 'l_expected' auf 'true'. Wenn die Zeichenfolge leer ist, wird 'l_result' auf 2 (falsch) gesetzt. Andernfalls wird die Zeichenfolge in Kleinbuchstaben konvertiert. Ist sie 'true' (wahr), ist 'l_result' 0 (wahr); ist sie 'false' (falsch), ist 'l_result' 2 (falsch). Ist die Zeichenfolge weder 'true' noch 'false', wird sie mit '%sysfunc(strip())' von Leerzeichen bereinigt, und 'l_result' wird basierend auf ihrer Länge nach der Bereinigung gesetzt: 0, wenn sie nicht leer ist (wahr), 2, wenn sie leer ist (falsch).
Kopiert!
1/*-- evaluate character type ------------------------------------------------*/
2%IF (%datatyp(&i_cond.) eq CHAR) %THEN %DO;
3 %LET l_expected=true;
4 %IF (%LENGTH(&i_cond.) eq 0) %THEN %DO;
5 %LET l_result = 2;
6 %END;
7 %ELSE %DO;
8 %LET l_actual = %lowcase (&i_cond.);
9 %IF (&l_actual. eq true) %THEN %DO;
10 %LET l_result = 0;
11 %END;
12 %ELSE %IF (&l_actual. eq false) %THEN %DO;
13 %LET l_result = 2;
14 %END;
15 %ELSE %DO;
16 %LET l_actual = %sysfunc(strip(&i_cond.));
17 %LET l_result = %eval((%LENGTH(&l_actual.) eq 0)*2);
18 %END;
19 %END;
20%END;
3 Codeblock
Macro SAS (Logique conditionnelle)
Erklärung :
Dieser Block bewertet die Bedingung 'i_cond', wenn sie vom Typ numerisch ist. Er setzt 'l_expected' auf 1. Der Wert von 'i_cond' wird in 'l_actual' gespeichert. Wenn 'i_cond' gleich 0 ist, wird 'l_result' auf 2 (falsch) gesetzt. In allen anderen Fällen (nicht-null numerischer Wert) wird 'l_result' auf 0 (wahr) gesetzt.
Kopiert!
1/*-- evaluate numeric type ------------------------------------------------*/
2%ELSE %IF (%datatyp(&i_cond.) eq NUMERIC) %THEN %DO;
3 %LET l_expected=1;
4 %LET l_actual = &i_cond.;
5 %IF (&i_cond eq 0) %THEN %DO;
6 %let l_result = 2;
7 %END;
8 %ELSE %DO;
9 %let l_result = 0;
10 %END;
11%END;
4 Codeblock
Macro SAS
Erklärung :
Dieser letzte Block ruft das interne Makro '%_asserts' auf. Dies ist der Kern der Assertionsprotokollierung. Es übergibt den Assertionstyp ('assertTrue'), den erwarteten Wert ('l_expected'), den tatsächlichen Wert ('l_actual'), die Assertionsbeschreibung ('i_desc') und das Auswertungsergebnis ('l_result'). Dieses Makro '%_asserts' ist für die Verwaltung und Berichterstattung der Testergebnisse verantwortlich.
Kopiert!
1%_asserts(
2 i_type = assertTrue
3 ,i_expected = &l_expected.
4 ,i_actual = &l_actual.
5 ,i_desc = &i_desc.
6 ,i_result = &l_result.
7)
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.