Changeset 72 for pjproject/trunk/pjlib/src/pjlib-test/string.c
- Timestamp:
- Nov 21, 2005 5:01:50 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjlib/src/pjlib-test/string.c
r65 r72 20 20 #include <pj/pool.h> 21 21 #include <pj/log.h> 22 #include <pj/os.h> 22 23 #include "test.h" 23 24 … … 64 65 #define UL_VALUE 3456789012UL 65 66 67 static int stricmp_test(void) 68 { 69 #define STRTEST(res,S1,S2,code) \ 70 do { \ 71 s1.ptr=S1; s1.slen=len; \ 72 s2.ptr=S2; s2.slen=len; \ 73 pj_get_timestamp(&t1); \ 74 if (pj_stricmp(&s1,&s2)!=res) return code; \ 75 pj_get_timestamp(&t2); \ 76 pj_sub_timestamp(&t2, &t1); \ 77 pj_add_timestamp(&e1, &t2); \ 78 pj_get_timestamp(&t1); \ 79 if (pj_stricmp_alnum(&s1,&s2)!=res) return code-1; \ 80 pj_get_timestamp(&t2); \ 81 pj_sub_timestamp(&t2, &t1); \ 82 pj_add_timestamp(&e2, &t2); \ 83 } while (0) 84 85 char *buf; 86 pj_str_t s1, s2; 87 pj_timestamp t1, t2, e1, e2, zero; 88 pj_uint32_t c1, c2; 89 int len; 90 91 e1.u32.hi = e1.u32.lo = e2.u32.hi = e2.u32.lo = 0; 92 93 pj_thread_sleep(0); 94 95 /* Compare empty strings. */ 96 len=0; 97 STRTEST( 0, "","",-500); 98 99 /* equal, length=1 100 * use buffer to simulate non-aligned string. 101 */ 102 buf = "a""A"; 103 len=1; 104 STRTEST( 0, "a",buf+0,-510); 105 STRTEST( 0, "a",buf+1,-512); 106 107 /* equal, length=2 108 * use buffer to simulate non-aligned string. 109 */ 110 buf = "aa""Aa""aA""AA"; 111 len=2; 112 STRTEST( 0, "aa",buf+0,-520); 113 STRTEST( 0, "aa",buf+2,-522); 114 STRTEST( 0, "aa",buf+4,-524); 115 STRTEST( 0, "aa",buf+6,-524); 116 117 /* equal, length=3 118 * use buffer to simulate non-aligned string. 119 */ 120 buf = "aaa""Aaa""aAa""aaA""AAa""aAA""AaA""AAA"; 121 len=3; 122 STRTEST( 0, "aaa",buf+0,-530); 123 STRTEST( 0, "aaa",buf+3,-532); 124 STRTEST( 0, "aaa",buf+6,-534); 125 STRTEST( 0, "aaa",buf+9,-536); 126 STRTEST( 0, "aaa",buf+12,-538); 127 STRTEST( 0, "aaa",buf+15,-540); 128 STRTEST( 0, "aaa",buf+18,-542); 129 STRTEST( 0, "aaa",buf+21,-534); 130 131 /* equal, length=4 */ 132 len=4; 133 STRTEST( 0, "aaaa","aaaa",-540); 134 STRTEST( 0, "aaaa","Aaaa",-542); 135 STRTEST( 0, "aaaa","aAaa",-544); 136 STRTEST( 0, "aaaa","aaAa",-546); 137 STRTEST( 0, "aaaa","aaaA",-548); 138 STRTEST( 0, "aaaa","AAaa",-550); 139 STRTEST( 0, "aaaa","aAAa",-552); 140 STRTEST( 0, "aaaa","aaAA",-554); 141 STRTEST( 0, "aaaa","AaAa",-556); 142 STRTEST( 0, "aaaa","aAaA",-558); 143 STRTEST( 0, "aaaa","AaaA",-560); 144 STRTEST( 0, "aaaa","AAAa",-562); 145 STRTEST( 0, "aaaa","aAAA",-564); 146 STRTEST( 0, "aaaa","AAaA",-566); 147 STRTEST( 0, "aaaa","AaAA",-568); 148 STRTEST( 0, "aaaa","AAAA",-570); 149 150 /* equal, length=5 */ 151 buf = "aaaAa""AaaaA""AaAaA""AAAAA"; 152 len=5; 153 STRTEST( 0, "aaaaa",buf+0,-580); 154 STRTEST( 0, "aaaaa",buf+5,-582); 155 STRTEST( 0, "aaaaa",buf+10,-584); 156 STRTEST( 0, "aaaaa",buf+15,-586); 157 158 /* not equal, length=1 */ 159 len=1; 160 STRTEST( -1, "a", "b", -600); 161 162 /* not equal, length=2 */ 163 buf = "ab""ba"; 164 len=2; 165 STRTEST( -1, "aa", buf+0, -610); 166 STRTEST( -1, "aa", buf+2, -612); 167 168 /* not equal, length=3 */ 169 buf = "aab""aba""baa"; 170 len=3; 171 STRTEST( -1, "aaa", buf+0, -620); 172 STRTEST( -1, "aaa", buf+3, -622); 173 STRTEST( -1, "aaa", buf+6, -624); 174 175 /* not equal, length=4 */ 176 buf = "aaab""aaba""abaa""baaa"; 177 len=4; 178 STRTEST( -1, "aaaa", buf+0, -630); 179 STRTEST( -1, "aaaa", buf+4, -632); 180 STRTEST( -1, "aaaa", buf+8, -634); 181 STRTEST( -1, "aaaa", buf+12, -636); 182 183 /* not equal, length=5 */ 184 buf="aaaab""aaaba""aabaa""abaaa""baaaa"; 185 len=5; 186 STRTEST( -1, "aaaaa", buf+0, -640); 187 STRTEST( -1, "aaaaa", buf+5, -642); 188 STRTEST( -1, "aaaaa", buf+10, -644); 189 STRTEST( -1, "aaaaa", buf+15, -646); 190 STRTEST( -1, "aaaaa", buf+20, -648); 191 192 zero.u32.hi = zero.u32.lo = 0; 193 c1 = pj_elapsed_cycle(&zero, &e1); 194 c2 = pj_elapsed_cycle(&zero, &e2); 195 196 if (c1 < c2) { 197 PJ_LOG(3,("", " error: pj_stricmp_alnum is slower than pj_stricmp!")); 198 return -700; 199 } 200 201 PJ_LOG(3, ("", " time: stricmp=%u, stricmp_alnum=%u (speedup=%d.%02dx)", 202 c1, c2, 203 (c1 * 100 / c2) / 100, 204 (c1 * 100 / c2) % 100)); 205 return 0; 206 #undef STRTEST 207 } 208 66 209 int string_test(void) 67 210 { … … 163 306 /* Done. */ 164 307 pj_pool_release(pool); 165 return 0; 308 309 return stricmp_test(); 166 310 } 167 311
Note: See TracChangeset
for help on using the changeset viewer.