Type : CREATION_INTERNE
Les données sont créées directement dans le code via une matrice IML (`m = {0 1, 0 2, 0 3, 0 4};`). Aucune source de données externe n'est utilisée.
| 1 | %macro spccSpectralize1; |
| 2 | %let gauss_correct = 0; |
| 3 | %let knn_correct = 0; |
| 4 | %let l_correct = 0; |
| 5 | PROC IML; |
| 6 | |
| 7 | package load spectralclust; |
| 8 | start spccGaussNeigh(m, sigma); |
| 9 | expected = {0 1, 0 2, 0 3, 0 4}; |
| 10 | IF sigma = 0.5 & m = expected THEN DO; |
| 11 | call symput('gauss_correct', '1'); |
| 12 | END; |
| 13 | ret = {0 3 2 1, 3 0 3 2, 2 3 0 3, 1 2 3 0}; |
| 14 | return ret; |
| 15 | finish; |
| 16 | |
| 17 | start spccKNNNeigh(m, k); |
| 18 | expected = {0 3 2 1, 3 0 3 2, 2 3 0 3, 1 2 3 0}; |
| 19 | IF k = 2 & m = expected THEN DO; |
| 20 | call symput('knn_correct', '1'); |
| 21 | END; |
| 22 | ret = {0 3 2 0, 3 0 3 2, 2 3 0 3, 0 2 3 0}; |
| 23 | return ret; |
| 24 | finish; |
| 25 | |
| 26 | start spccEigenLRW(m, nvecs); |
| 27 | expected = {0 3 2 0, 3 0 3 2, 2 3 0 3, 0 2 3 0}; |
| 28 | IF nvecs = 2 & m = expected THEN DO; |
| 29 | call symput('l_correct', '1'); |
| 30 | END; |
| 31 | ret = {1 1 1, -2.1638 0.2889 1, 2.1639 -0.2888 1, -1 -1 1}; |
| 32 | return ret; |
| 33 | finish; |
| 34 | |
| 35 | m = {0 1, 0 2, 0 3, 0 4}; |
| 36 | expected = {1 1 1, -2.1638 0.2889 1, 2.1639 -0.2888 1, -1 -1 1}; |
| 37 | out = spccSpectralize(m, 2, 'normalizedRW', 'gaussian', 0.5, 'knn', 2); |
| 38 | correct = all(out = expected); |
| 39 | IF &l_correct & &gauss_correct & &knn_correct & correct THEN call symput('return_code', '0'); |
| 40 | ELSE call symput('return_code', '1'); |
| 41 | QUIT; |
| 42 | %mend; |
| 43 | |
| 44 | %test(spccSpectralize1); |
| 1 | %macro spccSpectralize2; |
| 2 | %let gauss_correct = 0; |
| 3 | %let knn_correct = 0; |
| 4 | %let l_correct = 0; |
| 5 | PROC IML; |
| 6 | |
| 7 | package load spectralclust; |
| 8 | start spccGaussNeigh(m, sigma); |
| 9 | expected = {0 1, 0 2, 0 3, 0 4}; |
| 10 | IF sigma = 0.5 & m = expected THEN DO; |
| 11 | call symput('gauss_correct', '1'); |
| 12 | END; |
| 13 | ret = {0 3 2 1, 3 0 3 2, 2 3 0 3, 1 2 3 0}; |
| 14 | return ret; |
| 15 | finish; |
| 16 | |
| 17 | start spccMutKNNNeigh(m, k); |
| 18 | expected = {0 3 2 1, 3 0 3 2, 2 3 0 3, 1 2 3 0}; |
| 19 | IF k = 2 & m = expected THEN DO; |
| 20 | call symput('knn_correct', '1'); |
| 21 | END; |
| 22 | ret = {0 3 2 0, 3 0 3 2, 2 3 0 3, 0 2 3 0}; |
| 23 | return ret; |
| 24 | finish; |
| 25 | |
| 26 | start spccEigenLSym(m, nvecs); |
| 27 | expected = {0 3 2 0, 3 0 3 2, 2 3 0 3, 0 2 3 0}; |
| 28 | IF nvecs = 2 & m = expected THEN DO; |
| 29 | call symput('l_correct', '1'); |
| 30 | END; |
| 31 | ret = {1 1 1, -2.1638 0.2889 1, 2.1639 -0.2888 1, -1 -1 1}; |
| 32 | return ret; |
| 33 | finish; |
| 34 | |
| 35 | m = {0 1, 0 2, 0 3, 0 4}; |
| 36 | expected = {1 1 1, -2.1638 0.2889 1, 2.1639 -0.2888 1, -1 -1 1}; |
| 37 | out = spccSpectralize(m, 2, 'normalizedSym', 'gaussian', 0.5, 'mutual_knn', 2); |
| 38 | correct = all(out = expected); |
| 39 | IF &l_correct & &gauss_correct & &knn_correct & correct THEN call symput('return_code', '0'); |
| 40 | ELSE call symput('return_code', '1'); |
| 41 | QUIT; |
| 42 | %mend; |
| 43 | |
| 44 | %test(spccSpectralize2); |