Publicado el :
Macro CREATION_INTERNE

Macro assertTrue - Verificar si una condición es verdadera

Este código también está disponible en: Deutsch English Français
Esta macro, 'assertTrue', forma parte del framework SASUNIT y está diseñada para verificar si una condición dada se evalúa como 'verdadera'. Para tipos numéricos, un valor de 0 se considera falso, mientras que cualquier otro valor es verdadero. Para tipos de caracteres, una cadena vacía o compuesta únicamente de espacios, así como la palabra 'false' (insensible a mayúsculas y minúsculas), se consideran falsos. Todas las demás cadenas son verdaderas. La macro inicializa variables locales, verifica la secuencia de llamadas a través de %_checkCallingSequence, y luego procede a la evaluación del parámetro i_cond según su tipo (numérico o carácter). Finalmente, llama a la macro interna %_asserts para registrar el resultado de la aserción.
Análisis de datos

Type : CREATION_INTERNE


El código evalúa la variable de entrada 'i_cond', que es una condición pasada como parámetro. No lee datos directamente de archivos o bases de datos externas, sino que procesa un valor o una expresión interna al script.

1 Bloque de código
Macro SAS
Explicación :
Este bloque define la macro 'assertTrue' con dos parámetros: 'i_cond' (la condición a evaluar) y 'i_desc' (una descripción de la aserción). Declara la variable global 'g_inTestCase' y llama a '%endTestCall' para la gestión de mensajes. La macro luego realiza una verificación de la secuencia de llamadas a través de '%_checkCallingSequence' para asegurar que se usa correctamente en un contexto de aserción. Se declaran variables locales para almacenar los resultados intermedios de la evaluación.
¡Copiado!
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 Bloque de código
Macro SAS (Logique conditionnelle)
Explicación :
Este bloque evalúa la condición 'i_cond' si es de tipo carácter, determinado por la macro '%datatyp'. Define 'l_expected' como 'true'. Si la cadena está vacía, 'l_result' se establece en 2 (falso). De lo contrario, la cadena se convierte a minúsculas. Si es 'true' (verdadero), 'l_result' es 0 (verdadero); si es 'false' (falso), 'l_result' es 2 (falso). Si la cadena no es ni 'true' ni 'false', se limpia de espacios con '%sysfunc(strip())', y 'l_result' se define en función de su longitud después de la limpieza: 0 si no está vacía (verdadero), 2 si está vacía (falso).
¡Copiado!
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 Bloque de código
Macro SAS (Logique conditionnelle)
Explicación :
Este bloque evalúa la condición 'i_cond' si es de tipo numérico. Define 'l_expected' como 1. El valor de 'i_cond' se almacena en 'l_actual'. Si 'i_cond' es igual a 0, 'l_result' se establece en 2 (falso). En todos los demás casos (valor numérico no nulo), 'l_result' se establece en 0 (verdadero).
¡Copiado!
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 Bloque de código
Macro SAS
Explicación :
Este último bloque llama a la macro interna '%_asserts'. Este es el corazón del registro de la aserción. Le pasa el tipo de aserción ('assertTrue'), el valor esperado ('l_expected'), el valor actual ('l_actual'), la descripción de la aserción ('i_desc') y el resultado de la evaluación ('l_result'). Esta macro '%_asserts' es responsable de la gestión de los resultados de las pruebas y de su reporte.
¡Copiado!
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)
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.