Esta macro interna, `_checkCallingSequence`, es un componente del framework SASUnit. Su función es validar el orden de ejecución de las llamadas a macros específicas. Recibe un parámetro `i_callerType` que indica el tipo de llamante ('scenario' o 'assert'). Si `i_callerType` es 'scenario', la macro asegura que 'initScenario' no se llame dos veces consecutivas o dentro de un contexto de 'testCall' o 'testCase' ya activo. Esto garantiza la integridad del entorno de prueba. Si `i_callerType` es 'assert', verifica que la función 'Assert' se llame solo después de la inicialización de un escenario ('initScenario') y un caso de prueba ('initTestCase'). En caso de detectar una secuencia de llamada incorrecta, la macro emite un mensaje de error a través de `%_issueErrorMessage` y devuelve el valor 1, señalando un fallo. Si la secuencia es correcta, devuelve 0. Un retorno de -1 indica un tipo de llamante no reconocido.
Análisis de datos
Type : CREATION_INTERNE
El script manipula únicamente variables macro globales internas del framework SASUnit (como `g_inScenario`, `g_inTestCase`, `g_inTestCall`, `g_currentLogger`). No lee ni escribe datos de conjuntos de datos SAS tradicionales, bases de datos externas o archivos.
1 Bloque de código
MACRO DEFINITION
Explicación : Este bloque define la macro `_checkCallingSequence`. Inicializa las variables macro globales `g_inScenario`, `g_inTestCase` y `g_inTestCall` (si no están ya definidas) para seguir el estado del contexto de prueba. Convierte `i_callerType` a minúsculas para una comparación insensible a mayúsculas y minúsculas. Se utilizan estructuras condicionales `%if/%then/%do` para evaluar `l_callerType`.
- Si `l_callerType` es 'scenario', la macro verifica que la inicialización del escenario no se realice de forma duplicada, o dentro de un contexto de `TestCall` o `TestCase` ya activo. Si se violan estas condiciones, se genera un mensaje de error y la macro devuelve 1.
- Si `l_callerType` es 'assert', la macro asegura que la llamada de aserción se realice dentro de un escenario (`g_inScenario = 1`) y un caso de prueba (`g_inTestCase = 1`) activos. En caso de incumplimiento, se emite un mensaje de error y la macro devuelve 1.
En ambos casos, si la secuencia es correcta, la macro devuelve 0. Se utiliza un retorno de -1 para un `i_callerType` no gestionado. La macro `_issueErrorMessage` (no definida aquí pero se supone que existe en el framework) se utiliza para la gestión de errores.
¡Copiado!
/**
\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;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Copyright 2010-2023 HMS Analytical Software GmbH, http://www.analytical-software.de. Este archivo es parte de SASUnit, el framework de pruebas unitarias para programas SAS(R).
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.