Veröffentlicht am :
Test CREATION_INTERNE

Test des Makros mp_base64copy

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Das Skript beginnt mit der Definition einer einfachen Zeichenkette, schreibt diese in eine temporäre Datei und kodiert sie dann mittels `%mp_base64copy` in Base64. Das kodierte Ergebnis wird anschließend dekodiert, und die ursprüngliche Zeichenkette wird mit der dekodierten Zeichenkette mittels `%mp_assert` verglichen. Eine zweite Testreihe wird mit einer Zeichenkette durchgeführt, die Mehrbyte-Zeichen enthält. Diese Zeichenkette wird ebenfalls kodiert, dann dekodiert, und es wird eine Assertion durchgeführt, um die Integrität der Mehrbyte-Zeichenkette nach dem Kodierungs-/Dekodierungsvorgang zu überprüfen. Die Assertionsergebnisse werden in `work.test_results` gespeichert.
Datenanalyse

Type : CREATION_INTERNE


Alle verwendeten Daten (Testzeichenketten) werden direkt im Skript über Makrovariablen oder DATA-Schritte, die in temporäre Dateien schreiben, definiert und erstellt. Es werden keine externen Daten oder SASHELP direkt gelesen.

1 Codeblock
DATA STEP / Macro (%mp_base64copy, %mp_assert) Data
Erklärung :
Dieser Block initialisiert eine Makrovariable `string1` mit einer einfachen Zeichenkette. Eine temporäre Datei `tmp` wird erstellt und der Wert von `string1` hineingeschrieben. Das Makro `%mp_base64copy` wird dann aufgerufen, um den Inhalt von `tmp` (über `inref=tmp`) zu kodieren und das Ergebnis in der Fileref `myref` zu speichern. Ein `data _null_` liest `myref` und zeigt dessen Inhalt im Log an (zur Zwischenprüfung). Der Inhalt von `myref` wird dann von `%mp_base64copy` in `mynewref` dekodiert. Schließlich liest ein weiteres `data _null_` `mynewref`, ruft die dekodierte Zeichenkette ab und speichert sie in der Makrovariable `string1_check`. Das Makro `%mp_assert` wird verwendet, um `string1` und `string1_check` zu vergleichen und so zu überprüfen, ob die Kodierung/Dekodierung die Integrität der ursprünglichen Zeichenkette bewahrt hat.
Kopiert!
1%let string1=base ik ally;
2filename tmp temp;
3DATA _null_;
4 file tmp;
5 put "&string1";
6RUN;
7%mp_base64copy(inref=tmp, outref=myref, ACTION=ENCODE)
8 
9DATA _null_;
10 INFILE myref;
11 INPUT;
12 put _infile_;
13RUN;
14%mp_base64copy(inref=myref, outref=mynewref, ACTION=DECODE)
15DATA _null_;
16 INFILE mynewref lrecl=5000;
17 INPUT;
18 put _infile_;
19 call symputx('string1_check',_infile_);
20 stop;
21RUN;
22%mp_assert(
23 iftrue=("&string1"="&string1_check"),
24 desc=Basic String Compare,
25 outds=work.test_results
26)
2 Codeblock
DATA STEP / Macro (%mp_base64copy, %mp_assert) Data
Erklärung :
Dieser Block testet die Fähigkeit des Makros `%mp_base64copy`, Zeichenketten mit Mehrbyte-Zeichen zu verarbeiten. Eine Literalzeichenkette mit Sonderzeichen wird in eine temporäre Datei `tmp2` geschrieben. Diese Zeichenkette wird dann in `myref2` Base64-kodiert und anschließend mit `%mp_base64copy` in `newref2` dekodiert. Ein `data _null_` liest den dekodierten Inhalt von `newref2` und vergleicht ihn mit der ursprünglichen Zeichenkette. Das Ergebnis dieses Vergleichs wird in der Makrovariable `check2` gespeichert. Schließlich wird `%mp_assert` verwendet, um zu überprüfen, ob `check2` gleich '1' ist, was bestätigt, dass die Mehrbyte-Zeichenkette während des gesamten Kodierungs- und Dekodierungsprozesses korrekt verarbeitet wurde.
Kopiert!
1filename tmp2 temp lrecl=500;
2DATA _null_;
3 file tmp2;
4 put "'', '', '', '', '', '', '', '', '', '', '', '', '', ''";
5RUN;
6%mp_base64copy(inref=tmp2, outref=myref2, ACTION=ENCODE)
7 
8%mp_base64copy(inref=myref2, outref=newref2, ACTION=DECODE)
9DATA _null_;
10 INFILE newref2 lrecl=5000;
11 INPUT;
12 list;
13 /* do not print the string to the log else viya 3.5 throws exception */
14 IF trim(_infile_)=
15 "'', '', '', '', '', '', '', '', '', '', '', '', '', ''"
16 THEN call symputx('check2',1);
17 ELSE call symputx('check2',0);
18 stop;
19RUN;
20%mp_assert(
21 iftrue=("&check2"="1"),
22 desc=Double Byte String Compare,
23 outds=work.test_results
24)
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.