Publié le :
Test, Macro CREATION_INTERNE

Test de la macro mp_chop

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le script commence par définir des macro-variables pour les chemins de fichiers temporaires et la chaîne de correspondance. Il crée ensuite un fichier texte temporaire (`file.txt`) dans la librairie WORK avec un contenu prédéfini. La macro `%mp_chop` est appelée quatre fois, chaque appel testant une combinaison spécifique de paramètres pour découper le fichier d'entrée et enregistrer les résultats dans des fichiers de sortie distincts. Les macros `%mp_assertscope` sont utilisées pour la gestion du contexte de test. Après l'exécution de `%mp_chop`, le script lit le contenu de chaque fichier de sortie dans des macro-variables et utilise la macro `%mp_assert` (faisant partie du framework SASUnit) pour valider que les résultats de la découpe correspondent aux attentes pour chaque scénario de test.
Analyse des données

Type : CREATION_INTERNE


Les données d'entrée (`file.txt`) sont entièrement créées et gérées au sein du script lui-même, dans la librairie temporaire WORK, via une étape DATA _NULL_. Les fichiers de sortie produits par %mp_chop sont également temporaires et leurs contenus sont lus de manière interne pour la vérification des tests.

1 Bloc de code
Définition de macro-variables
Explication :
Ce bloc initialise des macro-variables essentielles au script, définissant le nom du fichier d'entrée temporaire, la chaîne de caractères à rechercher, et les noms des quatre fichiers de sortie qui contiendront les résultats de la macro %mp_chop.
Copié !
1%let src="%sysfunc(pathname(work))/file.txt";
2%let str=Chop here!;
3%let out1="%sysfunc(pathname(work))/file1.txt";
4%let out2="%sysfunc(pathname(work))/file2.txt";
5%let out3="%sysfunc(pathname(work))/file3.txt";
6%let out4="%sysfunc(pathname(work))/file4.txt";
2 Bloc de code
DATA STEP Data
Explication :
Crée un fichier texte temporaire (`file.txt`) dans la librairie WORK. Ce fichier sert de jeu de données d'entrée pour tester la macro %mp_chop, avec un contenu simple pour vérifier les opérations de découpe.
Copié !
1DATA _null_;
2 file &src;
3 put "startsection&str.endsection";
4RUN;
3 Bloc de code
Appel de macro Data
Explication :
Ce bloc exécute la macro %mp_chop quatre fois, testant différentes combinaisons de paramètres (conservation de la 'FIRST' ou 'LAST' partie, et point de correspondance 'START' ou 'END'). Chaque appel écrit le résultat dans un fichier temporaire distinct. `%mp_assertscope` est utilisé pour gérer l'environnement de test, probablement pour sauvegarder et restaurer l'état des macro-variables.
Copié !
1%mp_assertscope(SNAPSHOT)
2%mp_chop(&src, matchvar=str, keep=FIRST, outfile=&out1)
3%mp_chop(&src, matchvar=str, keep=LAST, outfile=&out2)
4%mp_chop(&src, matchvar=str, keep=FIRST, matchpoint=END, outfile=&out3)
5%mp_chop(&src, matchvar=str, keep=LAST, matchpoint=END, outfile=&out4)
6%mp_assertscope(COMPARE)
4 Bloc de code
DATA STEP
Explication :
Cette série d'étapes DATA _NULL_ lit le contenu de chacun des quatre fichiers de sortie générés par %mp_chop et stocke la première ligne de chaque fichier dans des macro-variables dédiées (`test1` à `test4`). Ces macro-variables seront utilisées pour la vérification des résultats.
Copié !
1DATA _null_;
2 INFILE &out1 lrecl=200;
3 INPUT;
4 call symputx('test1',_infile_);
5DATA _null_;
6 INFILE &out2 lrecl=200;
7 INPUT;
8 call symputx('test2',_infile_);
9DATA _null_;
10 INFILE &out3 lrecl=200;
11 INPUT;
12 call symputx('test3',_infile_);
13DATA _null_;
14 INFILE &out4 lrecl=200;
15 INPUT;
16 call symputx('test4',_infile_);
17RUN;
5 Bloc de code
Appel de macro
Explication :
Ce bloc utilise la macro `%mp_assert` pour effectuer quatre assertions distinctes. Chaque assertion vérifie si le contenu d'une macro-variable (issues des fichiers de sortie de %mp_chop) correspond à la chaîne de caractères attendue. Les descriptions (`desc`) et le jeu de données de sortie pour les résultats des tests (`outds=work.test_results`) sont spécifiés pour chaque assertion, documentant les différents scénarios de test.
Copié !
1%mp_assert(
2 iftrue=("&test1" = "startsection"),
3 desc=Checking keep FIRST matchpoint START
4 outds=work.test_results
5)
6%mp_assert(
7 iftrue=("&test2" = "Chop here!endsection"),
8 desc=Checking keep LAST matchpoint START
9 outds=work.test_results
10)
11%mp_assert(
12 iftrue=("&test3" = "startsectionChop here!"),
13 desc=Checking keep FIRST matchpoint END
14 outds=work.test_results
15)
16%mp_assert(
17 iftrue=("&test4" = "endsection"),
18 desc=Checking keep LAST matchpoint END
19 outds=work.test_results
20)
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.
Informations de Copyright : Le script fait référence et utilise des macros du framework SASUnit. Le copyright de SASUnit est: Copyright 2010-2023 HMS Analytical Software GmbH, http://www.analytical-software.de. Ce fichier fait partie de SASUnit, le framework de test unitaire pour les programmes SAS(R).