Publié le :
Macro CREATION_INTERNE

Macro assertTrue - Vérifier si une condition est vraie

Ce code est également disponible en : Deutsch English Español
Cette macro, 'assertTrue', fait partie du framework SASUNIT et est conçue pour vérifier si une condition donnée est évaluée à 'vraie'. Pour les types numériques, une valeur de 0 est considérée comme fausse, tandis que toute autre valeur est vraie. Pour les types caractères, une chaîne vide ou composée uniquement d'espaces, ainsi que le mot 'false' (insensible à la casse), sont considérés comme faux. Toutes les autres chaînes sont vraies. La macro initialise des variables locales, vérifie la séquence d'appel via %_checkCallingSequence, puis procède à l'évaluation du paramètre i_cond selon son type (numérique ou caractère). Enfin, elle appelle la macro interne %_asserts pour enregistrer le résultat de l'assertion.
Analyse des données

Type : CREATION_INTERNE


Le code évalue la variable d'entrée 'i_cond', qui est une condition passée en paramètre. Il ne lit pas de données directement depuis des fichiers ou des bases de données externes, mais traite une valeur ou une expression interne au script.

1 Bloc de code
Macro SAS
Explication :
Ce bloc définit la macro 'assertTrue' avec deux paramètres : 'i_cond' (la condition à évaluer) et 'i_desc' (une description de l'assertion). Il déclare la variable globale 'g_inTestCase' et appelle '%endTestCall' pour la gestion des messages. La macro effectue ensuite une vérification de la séquence d'appel via '%_checkCallingSequence' pour s'assurer qu'elle est utilisée correctement dans un contexte d'assertion. Des variables locales sont déclarées pour stocker les résultats intermédiaires de l'évaluation.
Copié !
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 Bloc de code
Macro SAS (Logique conditionnelle)
Explication :
Ce bloc évalue la condition 'i_cond' si elle est de type caractère, déterminé par la macro '%datatyp'. Il définit 'l_expected' à 'true'. Si la chaîne est vide, 'l_result' est mis à 2 (faux). Sinon, la chaîne est convertie en minuscules. Si elle est 'true' (vrai), 'l_result' est 0 (vrai); si elle est 'false' (faux), 'l_result' est 2 (faux). Si la chaîne n'est ni 'true' ni 'false', elle est nettoyée des espaces avec '%sysfunc(strip())', et 'l_result' est défini en fonction de sa longueur après nettoyage : 0 si elle n'est pas vide (vrai), 2 si elle est vide (faux).
Copié !
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 Bloc de code
Macro SAS (Logique conditionnelle)
Explication :
Ce bloc évalue la condition 'i_cond' si elle est de type numérique. Il définit 'l_expected' à 1. La valeur de 'i_cond' est stockée dans 'l_actual'. Si 'i_cond' est égal à 0, 'l_result' est défini à 2 (faux). Dans tous les autres cas (valeur numérique non nulle), 'l_result' est défini à 0 (vrai).
Copié !
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 Bloc de code
Macro SAS
Explication :
Ce dernier bloc appelle la macro interne '%_asserts'. C'est le cœur de l'enregistrement de l'assertion. Il lui passe le type d'assertion ('assertTrue'), la valeur attendue ('l_expected'), la valeur actuelle ('l_actual'), la description de l'assertion ('i_desc') et le résultat de l'évaluation ('l_result'). Cette macro '%_asserts' est responsable de la gestion des résultats des tests et de leur reporting.
Copié !
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)
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.