Type : CREATION_INTERNE
Les données utilisées pour les tests sont des chaînes de caractères littérales définies directement dans la macro `%test_substring` via des instructions `%let`. Aucune lecture de fichier externe ou de bibliothèque SAS n'est effectuée. Toutes les variables sont créées et manipulées en mémoire pour les besoins du test.
| 1 | %macro test_substring; |
| 2 | |
| 3 | %let SOURCE=abc; |
| 4 | %let start=1; |
| 5 | %let END=2; |
| 6 | %assertEqual(a=%str(ab),b=%substring(&SOURCE,&start,&END),msg=%quote(substring(&SOURCE,&start,&END))); |
| 7 | |
| 8 | %let SOURCE=%str(abcdefghijk); |
| 9 | %let start=3; |
| 10 | %let END=6; |
| 11 | %assertEqual(a=%str(cdef),b=%substring(&SOURCE,&start,&END),msg=%quote(substring(&SOURCE,&start,&END))); |
| 12 | |
| 13 | %let SOURCE=%str(abcdefghijk); |
| 14 | %let start=0; |
| 15 | %let END=0; |
| 16 | %assertEqual(a=%str(),b=%substring(&SOURCE,&start,&END),msg=%quote(substring(&SOURCE,&start,&END))); |
| 17 | |
| 18 | %let SOURCE=%str(abcdefghijk); |
| 19 | %let start=0; |
| 20 | %let END=1; |
| 21 | %assertEqual(a=%str(a),b=%substring(&SOURCE,&start,&END),msg=%quote(substring(&SOURCE,&start,&END))); |
| 22 | |
| 23 | %let SOURCE=%str(abcdefghijk); |
| 24 | %let start=; |
| 25 | %let END=-2; |
| 26 | %assertEqual(a=%str(abcdefghij),b=%substring(&SOURCE,&start,&END),msg=%quote(substring(&SOURCE,&start,&END))); |
| 27 | |
| 28 | %let SOURCE=%str(abcdefghijk); |
| 29 | %let start=-4; |
| 30 | %let END=-2; |
| 31 | %assertEqual(a=%str(hij),b=%substring(&SOURCE,&start,&END),msg=%quote(substring(&SOURCE,&start,&END))); |
| 32 | |
| 33 | %let SOURCE=%str(abcdefghijk); |
| 34 | %let start=4; |
| 35 | %let END=2; |
| 36 | %assertEqual(a=%str(dcb),b=%substring(&SOURCE,&start,&END),msg=%quote(substring(&SOURCE,&start,&END))); |
| 37 | |
| 38 | %let SOURCE=%str(abcdefghijk); |
| 39 | %let start=-2; |
| 40 | %let END=2; |
| 41 | %assertEqual(a=%str(jihgfedcb),b=%substring(&SOURCE,&start,&END),msg=%quote(substring(&SOURCE,&start,&END))); |
| 42 | |
| 43 | %let SOURCE=%str(ab cd ef gh ij k); |
| 44 | %let start=3; |
| 45 | %let END=7; |
| 46 | %assertEqual(a=%str( cd e),b=%substring(&SOURCE,&start,&END),msg=%quote(substring(&SOURCE,&start,&END))); |
| 47 | |
| 48 | %let SOURCE=%str(abcdef); |
| 49 | %let start=0; |
| 50 | %let END=0; |
| 51 | %assertEqual(a=%str(),b=%substring(&SOURCE,&start,&END),msg=%quote(substring(&SOURCE,&start,&END))); |
| 52 | |
| 53 | %let SOURCE=%str(ab 汉字 cdef 测试); |
| 54 | %let start=4; |
| 55 | %let END=5; |
| 56 | %assertEqual(a=%str(汉字),b=%substring(&SOURCE,&start,&END),msg=%quote(substring(&SOURCE,&start,&END))); |
| 57 | |
| 58 | %let SOURCE=%str(ab 汉字 cdef 测试); |
| 59 | %let start=5; |
| 60 | %let END=4; |
| 61 | %assertEqual(a=%str(字汉),b=%substring(&SOURCE,&start,&END),msg=%quote(substring(&SOURCE,&start,&END))); |
| 62 | |
| 63 | %let SOURCE=%str(ab 汉字 cdef 测试); |
| 64 | %let start=-1; |
| 65 | %let END=1; |
| 66 | %assertEqual(a=%str(试测 fedc 字汉 ba),b=%substring(&SOURCE,&start,&END),msg=%quote(substring(&SOURCE,&start,&END))); |
| 67 | |
| 68 | %mend; |
| 1 | %test_substring; |