Publicado el :

Prueba unitaria de la macro mp_storediffs

Este código también está disponible en: Deutsch English Français
En espera de validación
Este programa ejecuta una serie de pruebas unitarias para verificar la robustez de la macro mp_storediffs. Genera datos de prueba derivados de sashelp.class, aplica modificaciones controladas y utiliza macros de aserción (mp_assert, mp_assertdsobs, mp_assertcolvals) para validar que las diferencias reportadas son exactas. Los escenarios incluyen cambios mixtos, ausencia de cambios y solo eliminaciones.
Análisis de datos

Type : MIXTE


Los datos se generan localmente (biblioteca WORK) a partir de la tabla del sistema sashelp.class a través de pasos DATA.

1 Bloque de código
DATA STEP Data
Explicación :
Creación de las tablas de prueba para el primer escenario: una tabla original y tablas que simulan eliminaciones, modificaciones y adiciones.
¡Copiado!
1DATA work.orig work.deleted work.changed work.appended;
2 SET sashelp.class;
3 IF _n_=1 THEN DO;
4 OUTPUT work.orig work.deleted;
5 END;
6 ELSE IF _n_=2 THEN DO;
7 OUTPUT work.orig;
8 age=99;
9 OUTPUT work.changed;
10 END;
11 ELSE DO;
12 name='Newbie';
13 OUTPUT work.appended;
14 stop;
15 END;
16RUN;
2 Bloque de código
MACRO CALL
Explicación :
Llamada a la macro mp_storediffs para comparar sashelp.class con work.orig y generar las diferencias en work.final.
¡Copiado!
1%mp_storediffs(sashelp.class,work.orig,NAME
2 ,delds=work.deleted
3 ,modds=work.changed
4 ,appds=work.appended
5 ,outds=work.final
6 ,mdebug=1
7)
3 Bloque de código
MACRO CALL
Explicación :
Verificación de la ausencia de errores del sistema y aserción de que la tabla de resultados contiene exactamente 15 observaciones.
¡Copiado!
1%mp_assert(
2 iftrue=(
3 %str(&syscc)=%str(0)
4 ),
5 desc=ensure no errors,
6 outds=work.test_results
7)
8 
9%mp_assertdsobs(work.final,
10 desc=Has 15 records,
11 test=EQUALS 15,
12 outds=work.test_results
13)
4 Bloque de código
DATA STEP Data
Explicación :
Creación de una tabla de referencia para validar que la columna 'tgtvar_type' de la tabla final contiene únicamente los valores esperados a través de mp_assertcolvals.
¡Copiado!
1DATA work.check;
2 LENGTH val $10;
3 DO val='C','N';
4 OUTPUT;
5 END;
6RUN;
7%mp_assertcolvals(work.final.tgtvar_type,
8 checkvals=work.check.val,
9 desc=All values have a match,
10 test=ALLVALS
11)
5 Bloque de código
DATA STEP Data
Explicación :
Escenario de prueba 'Sin cambios': verifica que la comparación de tablas idénticas produce una tabla de diferencias vacía (0 observaciones).
¡Copiado!
1/* Test for when there are no actual changes */
2DATA work.orig work.deleted work.changed work.appended;
3 SET sashelp.class;
4 OUTPUT work.orig;
5RUN;
6%mp_storediffs(sashelp.class,work.orig,NAME
7 ,delds=work.deleted
8 ,modds=work.changed
9 ,appds=work.appended
10 ,outds=work.final2
11 ,mdebug=1
12)
13%mp_assertdsobs(work.final2,
14 desc=No changes produces 0 records,
15 test=EQUALS 0,
16 outds=work.test_results
17)
6 Bloque de código
DATA STEP Data
Explicación :
Escenario de prueba 'Solo eliminaciones': simula la eliminación de filas y verifica que el número de diferencias detectadas corresponde a las expectativas (70 registros).
¡Copiado!
1/* Test for deletes only */
2DATA work.orig work.deleted work.changed work.appended;
3 SET sashelp.class;
4 OUTPUT work.orig;
5 IF _n_>5 THEN OUTPUT work.deleted;
6RUN;
7 
8%mp_storediffs(sashelp.class,work.orig,NAME
9 ,delds=work.deleted
10 ,modds=work.changed
11 ,appds=work.appended
12 ,outds=work.final3
13 ,mdebug=1
14)
15%mp_assertdsobs(work.final3,
16 desc=Delete has 70 records,
17 test=EQUALS 70,
18 outds=work.test_results
19)
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.