17%mp_assertscope(SNAPSHOT)
21 length actual expected $32;
23 %mp_rowhash(md5_col=actual)
24 expected=put(md5(
'DC HASH v2'),$hex32.);
25 call symputx(
't1_actual',actual);
26 call symputx(
't1_expected',expected);
28%mp_assertscope(COMPARE,ignorelist=T1_ACTUAL T1_EXPECTED)
30 iftrue=(
"&t1_actual"=
"&t1_expected"),
31 desc=Versioned seed is returned when no variables are supplied,
32 outds=work.test_results
37 length c1 $1 actual expected $32;
38 length state digest $16 pair $32;
41 %mp_rowhash(md5_col=actual, cvars=c1)
42 state=md5('DC HASH v2');
43 digest=md5(trimn(c1));
45 expected=put(md5(pair),$hex32.);
46 call symputx('t2_actual',actual);
47 call symputx('t2_expected',expected);
50 iftrue=("&t2_actual"="&t2_expected"),
51 desc=Single character variable hash matches reference construction,
52 outds=work.test_results
57 length actual expected $32;
58 length state digest $16 numtext $64 pair $32;
61 %mp_rowhash(md5_col=actual, nvars=n1)
62 state=md5('DC HASH v2');
65 numtext=put(normal,binary64.);
66 digest=md5(trim(numtext));
68 expected=put(md5(pair),$hex32.);
69 call symputx('t3_actual',actual);
70 call symputx('t3_expected',expected);
73 iftrue=("&t3_actual"="&t3_expected"),
74 desc=Single numeric variable hash matches reference construction,
75 outds=work.test_results
80 length c1 c2 $1 h1 h2 $32;
84 %mp_rowhash(md5_col=h1, cvars=c1 c2)
86 %mp_rowhash(md5_col=h2, cvars=c2 c1)
87 call symputx('t4_h1',h1);
88 call symputx('t4_h2',h2);
91 iftrue=("&t4_h1" ne "&t4_h2"),
92 desc=Order of cvars changes the resulting hash,
93 outds=work.test_results
102 %mp_rowhash(md5_col=h1, nvars=n1 n2)
104 %mp_rowhash(md5_col=h2, nvars=n2 n1)
105 call symputx('t5_h1',h1);
106 call symputx('t5_h2',h2);
109 iftrue=("&t5_h1" ne "&t5_h2"),
110 desc=Order of nvars changes the resulting hash,
111 outds=work.test_results
123data work.test6_hashed;
126 %mp_rowhash(md5_col=hash, cvars=c, nvars=n)
130 select count(distinct hash) into: t6_distinct trimmed
131 from work.test6_hashed;
135 iftrue=(&t6_distinct=1),
136 desc=Identical rows produce identical hashes,
137 outds=work.test_results
151data work.test7_hashed;
154 %mp_rowhash(md5_col=hash, cvars=c, nvars=n)
158 select count(distinct hash) into: t7_distinct trimmed
159 from work.test7_hashed;
163 iftrue=(&t7_distinct=2),
164 desc=Different rows produce different hashes,
165 outds=work.test_results
177data work.test8_hashed;
180 %mp_rowhash(md5_col=hash, cvars=c)
184 select count(distinct hash) into: t8_distinct trimmed
185 from work.test8_hashed;
189 iftrue=(&t8_distinct=2),
190 desc=Leading blanks are retained in character hashes,
191 outds=work.test_results