Unit-Tests für das Makro mp_replace

ATTENTION : Ce contenu est DÉSACTIVÉ. Il est invisible pour les visiteurs.
Schwierigkeitsgrad
Anfänger
Veröffentlicht am :
Dieses Programm führt eine Reihe von Unit-Tests aus, um die Funktionsweise des Makros `%mp_replace` zu validieren. Es erstellt dynamisch Textdateien mit spezifischen Inhalten (einfache Zeichenketten, nachfolgende Leerzeichen, Punkte), ruft das Makro auf, um Ersetzungen durchzuführen, und liest dann die geänderten Dateien, um die erwarteten Ergebnisse mit den mithilfe der Makros `%mp_assert` und `%mp_assertscope` erhaltenen Ergebnissen zu vergleichen.
Datenanalyse

Type : INTERNE_ERSTELLUNG


Die Daten (Textdateien) werden on-the-fly durch DATA _NULL_ Schritte unter Verwendung der FILE-Anweisung generiert.

1 Codeblock
DATA STEP Data
Erklärung :
Initialisierung des ersten Testfalls: Definition der Zeichenketten und Erstellung einer Textdatei, die das Ziel enthält.
Kopiert!
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 Codeblock
MACRO CALL
Erklärung :
Ausführung des Ersetzungsmakros `%mp_replace`. `%mp_assertscope` wird verwendet, um sicherzustellen, dass das Makro keine parasitären Variablen in der globalen Umgebung erstellt.
Kopiert!
1%mp_assertscope(SNAPSHOT)
2%mp_replace(&test1, findvar=str, replacevar=rep)
3%mp_assertscope(COMPARE)
3 Codeblock
MACRO CALL
Erklärung :
Lesen des Dateiergebnisses und Validierung der Ersetzung über das Assertionsmakro `%mp_assert`.
Kopiert!
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 Codeblock
DATA STEP Data
Erklärung :
Erstellung des zweiten Testfalls: Handhabung von Zeichenketten, die nachfolgende Leerzeichen enthalten.
Kopiert!
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 Codeblock
MACRO CALL
Erklärung :
Ausführung der Ersetzung und Überprüfung, ob die Leerzeichen korrekt behandelt wurden.
Kopiert!
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 Codeblock
DATA STEP Data
Erklärung :
Erstellung des dritten Testfalls: Handhabung von Zeichenketten, die Punkte enthalten.
Kopiert!
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 Codeblock
MACRO CALL
Erklärung :
Ausführung und abschließende Validierung für das Szenario mit Punkten in den Zeichenketten.
Kopiert!
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)
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.

Zugehörige Dokumentation

Aucune documentation spécifique pour cette catégorie.