Ignore:
Timestamp:
Jun 28, 2007 12:50:10 AM (17 years ago)
Author:
bennylp
Message:

Fixed ticket #348: various bugs in string comparison functions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjlib/src/pjlib-test/string.c

    r1266 r1397  
    7272PJ_INLINE(int) cmp(const char *expr, int i, int j) 
    7373{ 
    74     i = !((i>0 && j>0) || (i<0 && j<0) || (i==0 && j==0)); 
    75     if (i) { 
     74    int r = !((i>0 && j>0) || (i<0 && j<0) || (i==0 && j==0)); 
     75    if (r) { 
    7676        PJ_LOG(3,(THIS_FILE,"   error: %s: expecting %d, got %d", expr, j, i)); 
    7777    } 
    78     return i; 
     78    return r; 
    7979} 
    8080#else 
     
    9595 * pj_strnicmp2(). 
    9696 */ 
    97 #define STRTEST(res,S1,S2,code) \ 
     97#define STRTEST(res,res2,S1,S2,code)    \ 
    9898            do { \ 
    9999                s1.ptr=S1; s1.slen=(S1)?len:0; \ 
     
    109109                pj_sub_timestamp(&t2, &t1); \ 
    110110                pj_add_timestamp(&e2, &t2); \ 
    111                 if (C(pj_stricmp2(&s1,S2),res)) return code*10; \ 
     111                if (C(pj_stricmp2(&s1,S2),res2)) return code*10; \ 
    112112                if (C(pj_strnicmp(&s1,&s2,len),res)) return code*100; \ 
    113113                if (C(pj_strnicmp2(&s1,S2,len),res)) return code*1000; \ 
     
    128128    /* Compare empty strings. */ 
    129129    len=0; 
    130     STRTEST( 0, "","",-500); 
    131     STRTEST( 0, SNULL,"",-502); 
    132     STRTEST( 0, "",SNULL,-504); 
    133     STRTEST( 0, SNULL,SNULL,-506); 
    134     STRTEST( 0, "hello","world",-508); 
     130    STRTEST( 0, 0, "","",-500); 
     131    STRTEST( 0, 0, SNULL,"",-502); 
     132    STRTEST( 0, 0, "",SNULL,-504); 
     133    STRTEST( 0, 0, SNULL,SNULL,-506); 
     134    STRTEST( 0, -1, "hello","world",-508); 
    135135 
    136136    /* equal, length=1  
     
    139139    buf = "a""A"; 
    140140    len=1; 
    141     STRTEST( 0, "a",buf+0,-510); 
    142     STRTEST( 0, "a",buf+1,-512); 
    143     STRTEST( -1, "O", "P", -514); 
    144     STRTEST(-1, SNULL, "a", -516); 
    145     STRTEST(1, "a", SNULL, -518); 
     141    STRTEST( 0,  -1, "a",buf+0,-510); 
     142    STRTEST( 0,  0, "a",buf+1,-512); 
     143    STRTEST(-1, -1, "O", "P", -514); 
     144    STRTEST(-1, -1, SNULL, "a", -516); 
     145    STRTEST( 1,  1, "a", SNULL, -518); 
    146146 
    147147    /* equal, length=2  
     
    150150    buf = "aa""Aa""aA""AA"; 
    151151    len=2; 
    152     STRTEST( 0, "aa",buf+0,-520); 
    153     STRTEST( 0, "aa",buf+2,-522); 
    154     STRTEST( 0, "aa",buf+4,-524); 
    155     STRTEST( 0, "aa",buf+6,-524); 
     152    STRTEST( 0, -1, "aa",buf+0,-520); 
     153    STRTEST( 0, -1, "aa",buf+2,-522); 
     154    STRTEST( 0, -1, "aa",buf+4,-524); 
     155    STRTEST( 0, 0, "aa",buf+6,-524); 
    156156 
    157157    /* equal, length=3  
     
    160160    buf = "aaa""Aaa""aAa""aaA""AAa""aAA""AaA""AAA"; 
    161161    len=3; 
    162     STRTEST( 0, "aaa",buf+0,-530); 
    163     STRTEST( 0, "aaa",buf+3,-532); 
    164     STRTEST( 0, "aaa",buf+6,-534); 
    165     STRTEST( 0, "aaa",buf+9,-536); 
    166     STRTEST( 0, "aaa",buf+12,-538); 
    167     STRTEST( 0, "aaa",buf+15,-540); 
    168     STRTEST( 0, "aaa",buf+18,-542); 
    169     STRTEST( 0, "aaa",buf+21,-534); 
     162    STRTEST( 0, -1, "aaa",buf+0,-530); 
     163    STRTEST( 0, -1, "aaa",buf+3,-532); 
     164    STRTEST( 0, -1, "aaa",buf+6,-534); 
     165    STRTEST( 0, -1, "aaa",buf+9,-536); 
     166    STRTEST( 0, -1, "aaa",buf+12,-538); 
     167    STRTEST( 0, -1, "aaa",buf+15,-540); 
     168    STRTEST( 0, -1, "aaa",buf+18,-542); 
     169    STRTEST( 0, 0, "aaa",buf+21,-534); 
    170170 
    171171    /* equal, length=4 */ 
    172172    len=4; 
    173     STRTEST( 0, "aaaa","aaaa",-540); 
    174     STRTEST( 0, "aaaa","Aaaa",-542); 
    175     STRTEST( 0, "aaaa","aAaa",-544); 
    176     STRTEST( 0, "aaaa","aaAa",-546); 
    177     STRTEST( 0, "aaaa","aaaA",-548); 
    178     STRTEST( 0, "aaaa","AAaa",-550); 
    179     STRTEST( 0, "aaaa","aAAa",-552); 
    180     STRTEST( 0, "aaaa","aaAA",-554); 
    181     STRTEST( 0, "aaaa","AaAa",-556); 
    182     STRTEST( 0, "aaaa","aAaA",-558); 
    183     STRTEST( 0, "aaaa","AaaA",-560); 
    184     STRTEST( 0, "aaaa","AAAa",-562); 
    185     STRTEST( 0, "aaaa","aAAA",-564); 
    186     STRTEST( 0, "aaaa","AAaA",-566); 
    187     STRTEST( 0, "aaaa","AaAA",-568); 
    188     STRTEST( 0, "aaaa","AAAA",-570); 
     173    STRTEST( 0, 0, "aaaa","aaaa",-540); 
     174    STRTEST( 0, 0, "aaaa","Aaaa",-542); 
     175    STRTEST( 0, 0, "aaaa","aAaa",-544); 
     176    STRTEST( 0, 0, "aaaa","aaAa",-546); 
     177    STRTEST( 0, 0, "aaaa","aaaA",-548); 
     178    STRTEST( 0, 0, "aaaa","AAaa",-550); 
     179    STRTEST( 0, 0, "aaaa","aAAa",-552); 
     180    STRTEST( 0, 0, "aaaa","aaAA",-554); 
     181    STRTEST( 0, 0, "aaaa","AaAa",-556); 
     182    STRTEST( 0, 0, "aaaa","aAaA",-558); 
     183    STRTEST( 0, 0, "aaaa","AaaA",-560); 
     184    STRTEST( 0, 0, "aaaa","AAAa",-562); 
     185    STRTEST( 0, 0, "aaaa","aAAA",-564); 
     186    STRTEST( 0, 0, "aaaa","AAaA",-566); 
     187    STRTEST( 0, 0, "aaaa","AaAA",-568); 
     188    STRTEST( 0, 0, "aaaa","AAAA",-570); 
    189189 
    190190    /* equal, length=5 */ 
    191191    buf = "aaaAa""AaaaA""AaAaA""AAAAA"; 
    192192    len=5; 
    193     STRTEST( 0, "aaaaa",buf+0,-580); 
    194     STRTEST( 0, "aaaaa",buf+5,-582); 
    195     STRTEST( 0, "aaaaa",buf+10,-584); 
    196     STRTEST( 0, "aaaaa",buf+15,-586); 
     193    STRTEST( 0, -1, "aaaaa",buf+0,-580); 
     194    STRTEST( 0, -1, "aaaaa",buf+5,-582); 
     195    STRTEST( 0, -1, "aaaaa",buf+10,-584); 
     196    STRTEST( 0, 0, "aaaaa",buf+15,-586); 
    197197 
    198198    /* not equal, length=1 */ 
    199199    len=1; 
    200     STRTEST( -1, "a", "b", -600); 
     200    STRTEST( -1, -1, "a", "b", -600); 
    201201 
    202202    /* not equal, length=2 */ 
    203203    buf = "ab""ba"; 
    204204    len=2; 
    205     STRTEST( -1, "aa", buf+0, -610); 
    206     STRTEST( -1, "aa", buf+2, -612); 
     205    STRTEST( -1, -1, "aa", buf+0, -610); 
     206    STRTEST( -1, -1, "aa", buf+2, -612); 
    207207 
    208208    /* not equal, length=3 */ 
    209209    buf = "aab""aba""baa"; 
    210210    len=3; 
    211     STRTEST( -1, "aaa", buf+0, -620); 
    212     STRTEST( -1, "aaa", buf+3, -622); 
    213     STRTEST( -1, "aaa", buf+6, -624); 
     211    STRTEST( -1, -1, "aaa", buf+0, -620); 
     212    STRTEST( -1, -1, "aaa", buf+3, -622); 
     213    STRTEST( -1, -1, "aaa", buf+6, -624); 
    214214 
    215215    /* not equal, length=4 */ 
    216216    buf = "aaab""aaba""abaa""baaa"; 
    217217    len=4; 
    218     STRTEST( -1, "aaaa", buf+0, -630); 
    219     STRTEST( -1, "aaaa", buf+4, -632); 
    220     STRTEST( -1, "aaaa", buf+8, -634); 
    221     STRTEST( -1, "aaaa", buf+12, -636); 
     218    STRTEST( -1, -1, "aaaa", buf+0, -630); 
     219    STRTEST( -1, -1, "aaaa", buf+4, -632); 
     220    STRTEST( -1, -1, "aaaa", buf+8, -634); 
     221    STRTEST( -1, -1, "aaaa", buf+12, -636); 
    222222 
    223223    /* not equal, length=5 */ 
    224224    buf="aaaab""aaaba""aabaa""abaaa""baaaa"; 
    225225    len=5; 
    226     STRTEST( -1, "aaaaa", buf+0, -640); 
    227     STRTEST( -1, "aaaaa", buf+5, -642); 
    228     STRTEST( -1, "aaaaa", buf+10, -644); 
    229     STRTEST( -1, "aaaaa", buf+15, -646); 
    230     STRTEST( -1, "aaaaa", buf+20, -648); 
     226    STRTEST( -1, -1, "aaaaa", buf+0, -640); 
     227    STRTEST( -1, -1, "aaaaa", buf+5, -642); 
     228    STRTEST( -1, -1, "aaaaa", buf+10, -644); 
     229    STRTEST( -1, -1, "aaaaa", buf+15, -646); 
     230    STRTEST( -1, -1, "aaaaa", buf+20, -648); 
    231231 
    232232    zero.u32.hi = zero.u32.lo = 0; 
Note: See TracChangeset for help on using the changeset viewer.