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é !
data work.orig work.deleted work.changed work.appended;
set sashelp.class;
if _n_=1 then do;
output work.orig work.deleted;
end;
else if _n_=2 then do;
output work.orig;
age=99;
output work.changed;
end;
else do;
name='Newbie';
output work.appended;
stop;
end;
run;
1
DATA work.orig work.deleted work.changed work.appended;
2
SET sashelp.class;
3
IF _n_=1THENDO;
4
OUTPUT work.orig work.deleted;
5
END;
6
ELSEIF _n_=2THENDO;
7
OUTPUT work.orig;
8
age=99;
9
OUTPUT work.changed;
10
END;
11
ELSEDO;
12
name='Newbie';
13
OUTPUT work.appended;
14
stop;
15
END;
16
RUN;
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.
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é !
data work.check;
length val $10;
do val='C','N';
output;
end;
run;
%mp_assertcolvals(work.final.tgtvar_type,
checkvals=work.check.val,
desc=All values have a match,
test=ALLVALS
)
1
DATA work.check;
2
LENGTH val $10;
3
DO val='C','N';
4
OUTPUT;
5
END;
6
RUN;
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é !
/* Test for when there are no actual changes */
data work.orig work.deleted work.changed work.appended;
set sashelp.class;
output work.orig;
run;
%mp_storediffs(sashelp.class,work.orig,NAME
,delds=work.deleted
,modds=work.changed
,appds=work.appended
,outds=work.final2
,mdebug=1
)
%mp_assertdsobs(work.final2,
desc=No changes produces 0 records,
test=EQUALS 0,
outds=work.test_results
)
1
/* Test for when there are no actual changes */
2
DATA work.orig work.deleted work.changed work.appended;
3
SET sashelp.class;
4
OUTPUT work.orig;
5
RUN;
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é !
/* Test for deletes only */
data work.orig work.deleted work.changed work.appended;
set sashelp.class;
output work.orig;
if _n_>5 then output work.deleted;
run;
%mp_storediffs(sashelp.class,work.orig,NAME
,delds=work.deleted
,modds=work.changed
,appds=work.appended
,outds=work.final3
,mdebug=1
)
%mp_assertdsobs(work.final3,
desc=Delete has 70 records,
test=EQUALS 70,
outds=work.test_results
)
1
/* Test for deletes only */
2
DATA work.orig work.deleted work.changed work.appended;
3
SET sashelp.class;
4
OUTPUT work.orig;
5
IF _n_>5THENOUTPUT work.deleted;
6
RUN;
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.
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.