Publié le :

Test unitaire de la macro mp_storediffs

Ce code est également disponible en : Deutsch English Español
En attente de validation
Ce programme exécute une série de tests unitaires pour vérifier la robustesse de la macro mp_storediffs. Il génère des données de test dérivées de sashelp.class, applique des modifications contrôlées, et utilise des macros d'assertion (mp_assert, mp_assertdsobs, mp_assertcolvals) pour valider que les différences rapportées sont exactes. Les scénarios incluent des changements mixtes, l'absence de changement et des suppressions seules.
Analyse des données

Type : MIXTE


Les données sont générées localement (bibliothèque WORK) à partir de la table système sashelp.class via des étapes DATA.

1 Bloc de code
DATA STEP Data
Explication :
Création des tables de test pour le premier scénario : une table originale, et des tables simulant des suppressions, modifications et ajouts.
Copié !
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 Bloc de code
MACRO CALL
Explication :
Appel de la macro mp_storediffs pour comparer sashelp.class avec work.orig et générer les différences dans work.final.
Copié !
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 Bloc de code
MACRO CALL
Explication :
Vérification de l'absence d'erreurs système et assertion que la table de résultat contient exactement 15 observations.
Copié !
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 Bloc de code
DATA STEP Data
Explication :
Création d'une table de référence pour valider que la colonne 'tgtvar_type' de la table finale contient uniquement les valeurs attendues via mp_assertcolvals.
Copié !
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 Bloc de code
DATA STEP Data
Explication :
Scénario de test 'Aucun changement' : vérifie que la comparaison de tables identiques produit une table de différences vide (0 observation).
Copié !
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 Bloc de code
DATA STEP Data
Explication :
Scénario de test 'Suppressions uniquement' : simule la suppression de lignes et vérifie que le nombre de différences détectées correspond aux attentes (70 records).
Copié !
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)
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.