Cette macro interne, `_checkCallingSequence`, est une composante du framework SASUnit. Son rôle est de valider l'ordre d'exécution des appels de macros spécifiques. Elle reçoit un paramètre `i_callerType` qui indique le type de l'appelant ('scenario' ou 'assert'). Si `i_callerType` est 'scenario', la macro s'assure que 'initScenario' n'est pas appelé deux fois consécutivement ou à l'intérieur d'un contexte de 'testCall' ou 'testCase' déjà actif. Ceci garantit l'intégrité de l'environnement de test. Si `i_callerType` est 'assert', elle vérifie que la fonction 'Assert' est appelée uniquement après l'initialisation d'un scénario ('initScenario') et d'un cas de test ('initTestCase'). En cas de détection d'une séquence d'appel incorrecte, la macro émet un message d'erreur via `%_issueErrorMessage` et retourne la valeur 1, signalant une défaillance. Si la séquence est correcte, elle retourne 0. Un retour de -1 indique un type d'appelant non reconnu.
Analyse des données
Type : CREATION_INTERNE
Le script manipule uniquement des variables macro globales internes au framework SASUnit (comme `g_inScenario`, `g_inTestCase`, `g_inTestCall`, `g_currentLogger`). Il ne lit ni n'écrit de données provenant de jeux de données SAS traditionnels, de bases de données externes ou de fichiers.
1 Bloc de code
MACRO DEFINITION
Explication : Ce bloc définit la macro `_checkCallingSequence`. Elle initialise les variables macro globales `g_inScenario`, `g_inTestCase` et `g_inTestCall` (si non déjà définies) pour suivre l'état du contexte de test. Elle convertit `i_callerType` en minuscules pour une comparaison insensible à la casse. Des structures conditionnelles `%if/%then/%do` sont utilisées pour évaluer le `l_callerType`.
- Si `l_callerType` est 'scenario', la macro vérifie que l'initialisation du scénario n'est pas effectuée en double, ou dans un contexte de `TestCall` ou `TestCase` déjà actif. Si ces conditions sont violées, un message d'erreur est généré et la macro retourne 1.
- Si `l_callerType` est 'assert', la macro s'assure que l'appel d'assertion est fait dans un scénario (`g_inScenario = 1`) et un cas de test (`g_inTestCase = 1`) actifs. En cas de non-respect, un message d'erreur est émis et la macro retourne 1.
Dans les deux cas, si la séquence est correcte, la macro retourne 0. Un retour de -1 est utilisé pour un `i_callerType` non géré. La macro `_issueErrorMessage` (non définie ici mais supposée exister dans le framework) est utilisée pour la gestion des erreurs.
Copié !
/**
\file
\ingroup SASUNIT_UTIL
\brief check for correct calling sequence
\version \$Revision$
\author \$Author$
\date \$Date$
\sa For further information please refer to https://github.com/HMS-Analytical-Software/SASUnit/wiki/User%27s%20Guide/
Here you can find the SASUnit documentation, release notes and license information.
\sa \$HeadURL$
\copyright Copyright 2010-2023 HMS Analytical Software GmbH, http://www.analytical-software.de
This file is part of SASUnit, the Unit testing framework for SAS(R) programs.
For copyright information and terms of usage under the GNU Lesser General Public License see included file README.md
or https://github.com/HMS-Analytical-Software/SASUnit/wiki/readme/.
\param i_callerType Type of macro calling (scenario, asssert)
*/
/** \cond */
%MACRO _checkCallingSequence(i_callerType =);
%global g_inScenario g_inTestCase g_inTestCall;
%let l_callerType = %lowcase (&i_callerType.);
%if (&l_callertype.=scenario) %then %do;
%if (&g_inScenario. = 1) %then %do;
%_issueErrorMessage(&g_currentLogger.,_checkCallingSequence: initScenario must not be called twice!)
1
%RETURN;
%end;
%if (&g_inTestCall. = 1) %then %do;
%_issueErrorMessage(&g_currentLogger.,_checkCallingSequence: initScenario must not be called within a test call!)
1
%RETURN;
%end;
%if (&g_inTestcase. = 1) %then %do;
%_issueErrorMessage(&g_currentLogger.,_checkCallingSequence: initScenario must not be called within a test case!)
1
%RETURN;
%end;
0
%RETURN;
%end;
%if (&l_callertype.=assert) %then %do;
%if (&g_inScenario. = 0) %then %do;
%_issueErrorMessage(&g_currentLogger.,_checkCallingSequence: Assert must be called after initScenario!)
1
%RETURN;
%end;
%if (&g_inTestcase. = 0) %then %do;
%_issueErrorMessage(&g_currentLogger.,_checkCallingSequence: Assert must be called after initTestCase!)
1
%RETURN;
%end;
0
%RETURN;
%end;
-1
%MEND _checkcallingSequence;
1
/**
2
\file
3
\ingroup SASUNIT_UTIL
4
5
\brief check for correct calling sequence
6
7
\version \$Revision$
8
\author \$Author$
9
\date \$Date$
10
11
\sa For further information please refer to https://github.com/HMS-Analytical-Software/SASUnit/wiki/User%27s%20Guide/
12
Here you can find the SASUnit documentation, release notes and license information.
13
\sa \$HeadURL$
14
\copyright Copyright 2010-2023 HMS Analytical Software GmbH, http://www.analytical-software.de
15
This file is part of SASUnit, the Unit testing framework for SAS(R) programs.
16
For copyright information and terms of usage under the GNU Lesser General Public License see included file README.md
17
or https://github.com/HMS-Analytical-Software/SASUnit/wiki/readme/.
18
19
\param i_callerType Type of macro calling (scenario, asssert)
20
21
*/
22
/** \cond */
23
%MACRO _checkCallingSequence(i_callerType =);
24
25
%global g_inScenario g_inTestCase g_inTestCall;
26
27
%let l_callerType = %lowcase (&i_callerType.);
28
29
%IF (&l_callertype.=scenario) %THEN %DO;
30
%IF (&g_inScenario. = 1) %THEN %DO;
31
%_issueErrorMessage(&g_currentLogger.,_checkCallingSequence: initScenario must not be called twice!)
32
1
33
%RETURN;
34
%END;
35
%IF (&g_inTestCall. = 1) %THEN %DO;
36
%_issueErrorMessage(&g_currentLogger.,_checkCallingSequence: initScenario must not be called within a test call!)
37
1
38
%RETURN;
39
%END;
40
%IF (&g_inTestcase. = 1) %THEN %DO;
41
%_issueErrorMessage(&g_currentLogger.,_checkCallingSequence: initScenario must not be called within a test case!)
42
1
43
%RETURN;
44
%END;
45
0
46
%RETURN;
47
%END;
48
%IF (&l_callertype.=assert) %THEN %DO;
49
%IF (&g_inScenario. = 0) %THEN %DO;
50
%_issueErrorMessage(&g_currentLogger.,_checkCallingSequence: Assert must be called after initScenario!)
51
1
52
%RETURN;
53
%END;
54
%IF (&g_inTestcase. = 0) %THEN %DO;
55
%_issueErrorMessage(&g_currentLogger.,_checkCallingSequence: Assert must be called after initTestCase!)
56
1
57
%RETURN;
58
%END;
59
0
60
%RETURN;
61
%END;
62
-1
63
%MEND _checkcallingSequence;
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.
Informations de Copyright : Copyright 2010-2023 HMS Analytical Software GmbH, http://www.analytical-software.de. Ce fichier fait partie de SASUnit, le framework de tests unitaires pour les programmes SAS(R).
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.