Publié le :
Test / Macro CREATION_INTERNE

Tests unitaires pour mp_zip et mp_unzip

Ce code est également disponible en : Deutsch English Español
En attente de validation
Ce programme exécute une série de trois tests pour vérifier la robustesse des macros de compression SASjs (mp_zip et mp_unzip). Les scénarios couverts sont : 1) La compression d'un fichier texte unique. 2) La compression d'une liste de fichiers référencés dans une table SAS©. 3) La compression d'un répertoire entier. Chaque test est suivi d'une étape de décompression et d'une assertion (mp_assert) comparant le contenu des fichiers extraits avec le contenu original pour garantir l'intégrité des données.
Analyse des données

Type : CREATION_INTERNE


Toutes les données et fichiers de test sont générés dynamiquement dans le répertoire WORK ou un sous-répertoire temporaire ('zipme') durant l'exécution du script.

1 Bloc de code
DATA STEP Data
Explication :
Initialisation de l'environnement de test (chemins) et création d'un fichier texte factice pour le premier scénario.
Copié !
1%let work=%sysfunc(pathname(work));
2%let root=&work/zipme;
3 
4/* TEST 1 - zip a file */
5%mf_mkdir(&root)
6 
7DATA _null_;
8 file "&root/test.txt";
9 put "houston, this is a test";
10RUN;
2 Bloc de code
MACRO
Explication :
Exécution du Test 1 : Compression du fichier unique, décompression, lecture du résultat et validation via mp_assert.
Copié !
1%mp_zip(in=&root/test.txt
2 ,type=FILE
3 ,outpath=&work
4 ,outname=myFile
5)
6 
7%mp_unzip(ziploc="&work/myFile.zip",outdir=&work)
8 
9DATA _null_;
10 INFILE "&work/test.txt";
11 INPUT;
12 call symputx('content1',_infile_);
13 putlog _infile_;
14RUN;
15 
16%mp_assert(
17 iftrue=(
18 %str(&content1)=%str(houston, this is a test)
19 ),
20 desc=Checking IF file zip / unzip works,
21 outds=work.test_results
22)
3 Bloc de code
DATA STEP Data
Explication :
Préparation du Test 2 : Création d'un second fichier et d'une table SAS contenant la liste des chemins de fichiers à compresser.
Copié !
1/* TEST 2 - zip a dataset of files */
2DATA _null_;
3 file "&root/test2.txt";
4 put "houston, this is test2";
5RUN;
6LIBNAME tmp "&root";
7DATA tmp.test;
8 filepath="&root/test2.txt";
9RUN;
4 Bloc de code
MACRO
Explication :
Exécution du Test 2 : Compression basée sur la table SAS (type=DATASET), décompression et validation du contenu.
Copié !
1%mp_zip(in=tmp.test
2 ,incol=filepath
3 ,type=DATASET
4 ,outpath=&work
5 ,outname=myFile2
6)
7 
8%mp_unzip(ziploc="&work/myFile2.zip",outdir=&work)
9 
10DATA _null_;
11 INFILE "&work/test2.txt";
12 INPUT;
13 call symputx('content2',_infile_);
14 putlog _infile_;
15RUN;
16 
17%mp_assert(
18 iftrue=(
19 %str(&content2)=%str(houston, this is test2)
20 ),
21 desc=Checking IF file zip / unzip from a dataset works,
22 outds=work.test_results
23)
5 Bloc de code
MACRO
Explication :
Exécution du Test 3 : Compression d'un répertoire entier (type=DIRECTORY), décompression dans un nouveau dossier 'out3' et validation de la présence des deux fichiers originaux.
Copié !
1/* TEST 3 - zip a dataset of files */
2%mf_mkdir(&work/out3)
3 
4%mp_zip(in=&root
5 ,type=DIRECTORY
6 ,outpath=&work
7 ,outname=myFile3
8)
9 
10%mp_unzip(ziploc="&work/myFile3.zip",outdir=&work/out3)
11 
12DATA _null_;
13 INFILE "&work/out3/test.txt";
14 INPUT;
15 call symputx('content3a',_infile_);
16 putlog _infile_;
17RUN;
18DATA _null_;
19 INFILE "&work/out3/test2.txt";
20 INPUT;
21 call symputx('content3b',_infile_);
22 putlog _infile_;
23RUN;
24 
25%mp_assert(
26 iftrue=(
27 %str(&content3a)=%str(houston, this is a test)
28 and
29 %str(&content3b)=%str(houston, this is test2)
30 ),
31 desc=Checking IF file zip / unzip from a directory works,
32 outds=work.test_results
33)
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.