Veröffentlicht am :
Test / Makro CREATION_INTERNE

Unit-Tests für mp_zip und mp_unzip

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Dieses Programm führt eine Reihe von drei Tests durch, um die Robustheit der SASjs-Komprimierungsmakros (mp_zip und mp_unzip) zu überprüfen. Die abgedeckten Szenarien sind: 1) Die Komprimierung einer einzelnen Textdatei. 2) Die Komprimierung einer Liste von Dateien, die in einer SAS©-Tabelle referenziert sind. 3) Die Komprimierung eines gesamten Verzeichnisses. Jedem Test folgt ein Dekomprimierungsschritt und eine Assertion (mp_assert), die den Inhalt der extrahierten Dateien mit dem ursprünglichen Inhalt vergleicht, um die Datenintegrität zu gewährleisten.
Datenanalyse

Type : CREATION_INTERNE


Alle Testdaten und -dateien werden während der Ausführung des Skripts dynamisch im WORK-Verzeichnis oder einem temporären Unterverzeichnis ('zipme') generiert.

1 Codeblock
DATA STEP Data
Erklärung :
Initialisierung der Testumgebung (Pfade) und Erstellung einer Dummy-Textdatei für das erste Szenario.
Kopiert!
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 Codeblock
MACRO
Erklärung :
Ausführung von Test 1: Komprimierung der einzelnen Datei, Dekomprimierung, Lesen des Ergebnisses und Validierung mittels mp_assert.
Kopiert!
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 Codeblock
DATA STEP Data
Erklärung :
Vorbereitung von Test 2: Erstellung einer zweiten Datei und einer SAS-Tabelle, die die Liste der zu komprimierenden Dateipfade enthält.
Kopiert!
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 Codeblock
MACRO
Erklärung :
Ausführung von Test 2: Komprimierung basierend auf der SAS-Tabelle (type=DATASET), Dekomprimierung und Validierung des Inhalts.
Kopiert!
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 Codeblock
MACRO
Erklärung :
Ausführung von Test 3: Komprimierung eines gesamten Verzeichnisses (type=DIRECTORY), Dekomprimierung in einen neuen Ordner 'out3' und Validierung des Vorhandenseins der beiden Originaldateien.
Kopiert!
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)
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.