Tests unitaires de la macro mp_replace

ATTENTION : Ce contenu est DÉSACTIVÉ. Il est invisible pour les visiteurs.
Niveau de difficulté
Débutant
Publié le :
Ce programme exécute une série de tests unitaires pour valider le fonctionnement de la macro `%mp_replace`. Il crée dynamiquement des fichiers texte avec des contenus spécifiques (chaînes simples, espaces finaux, points), invoque la macro pour effectuer des remplacements, puis lit les fichiers modifiés pour comparer les résultats attendus avec les résultats obtenus à l'aide des macros `%mp_assert` et `%mp_assertscope`.
Analyse des données

Type : CREATION_INTERNE


Les données (fichiers texte) sont générées à la volée par des étapes DATA _NULL_ utilisant l'instruction FILE.

1 Bloc de code
DATA STEP Data
Explication :
Initialisation du premier cas de test : définition des chaînes et création d'un fichier texte contenant la cible.
Copié !
1%let test1="&sasjswork/file.txt";
2%let str=replace/me;
3%let rep=with/this;
4DATA _null_;
5 file &test1;
6 put 'blahblah';
7 put "blahblah&str.blah";
8 put 'blahblahblah';
9RUN;
2 Bloc de code
MACRO CALL
Explication :
Exécution de la macro de remplacement `%mp_replace`. `%mp_assertscope` est utilisé pour garantir que la macro ne crée pas de variables parasites dans l'environnement global.
Copié !
1%mp_assertscope(SNAPSHOT)
2%mp_replace(&test1, findvar=str, replacevar=rep)
3%mp_assertscope(COMPARE)
3 Bloc de code
MACRO CALL
Explication :
Lecture du résultat du fichier et validation du remplacement via la macro d'assertion `%mp_assert`.
Copié !
1DATA _null_;
2 INFILE &test1;
3 INPUT;
4 IF _n_=2 THEN call symputx('test1result',_infile_);
5RUN;
6 
7%mp_assert(
8 iftrue=("&test1result" = "blahblah&rep.blah"),
9 desc=Checking first replace,
10 outds=work.test_results
11)
4 Bloc de code
DATA STEP Data
Explication :
Création du deuxième cas de test : gestion des chaînes contenant des espaces de fin.
Copié !
1%let test2="&sasjswork/file2.txt";
2%let str=%str(replacewith trailing spaces );
3%let rep=%str( with more spaces );
4DATA _null_;
5 file &test2 lrecl=500;
6 put 'blahblah';
7 put "blahblah&str.blah&str. replace &str.X";
8 put "blahbreplacewith&str.spacesahblah";
9RUN;
5 Bloc de code
MACRO CALL
Explication :
Exécution du remplacement et vérification que les espaces ont été correctement traités.
Copié !
1%mp_replace(&test2, findvar=str, replacevar=rep)
2 
3DATA _null_;
4 INFILE &test2 lrecl=500;
5 INPUT;
6 IF _n_=2 THEN call symputx('test2resulta',_infile_);
7 IF _n_=3 THEN call symputx('test2resultb',_infile_);
8RUN;
9 
10%mp_assert(
11 iftrue=("&test2resulta" = "blahblah&rep.blah&rep. replace &rep.X"),
12 desc=Checking second replace 2nd row,
13 outds=work.test_results
14)
6 Bloc de code
DATA STEP Data
Explication :
Création du troisième cas de test : gestion des chaînes contenant des points.
Copié !
1%let test3="&sasjswork/file3.txt";
2%let str=%str(replace.string.with.dots );
3%let rep=%str( more.dots);
4DATA _null_;
5 file &test3 lrecl=500;
6 put 'blahblah';
7 put "blahblah&str.blah&str. replace &str.X";
8 put "blahbreplacewith&str.spacesahblah";
9RUN;
7 Bloc de code
MACRO CALL
Explication :
Exécution et validation finale pour le scénario avec des points dans les chaînes de caractères.
Copié !
1%mp_replace(&test3, findvar=str, replacevar=rep)
2 
3DATA _null_;
4 INFILE &test3 lrecl=500;
5 INPUT;
6 IF _n_=2 THEN call symputx('test3resulta',_infile_);
7 IF _n_=3 THEN call symputx('test3resultb',_infile_);
8RUN;
9 
10%mp_assert(
11 iftrue=("&test3resulta" = "blahblah&rep.blah&rep. replace &rep.X"),
12 desc=Checking third replace 2nd row (dots),
13 outds=work.test_results
14)
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.