/*
*/
#include "sm/generic.h"
SM_RCSID("@(#)$Id: t-idcmp.c,v 1.1 2007/05/05 04:08:02 ca Exp $")
#include "sm/error.h"
#include "sm/assert.h"
#include "sm/mta.h"
#include "sm/io.h"
#include "sm/test.h"
static int Verbose = 0;
static int
tstidcmp(int smtpsid1, int smtpsid2)
{
sm_ret_T ret;
uint j, u;
int r;
sessta_id_T ta_id1, ta_id2;
id_count_T idc1, idc2;
id_count_T idcs[] =
{
0, 1, 16, 31, 32, 63, 64, 127, 128, 255, 256
, 1023, 1024, 4095, 4096
, 0x07FFFFFF, 0x0FFFFFFF, 0x08000000, 0x08000001
, 0x17FFFFFF, 0x1FFFFFFF, 0x18000000, 0x18000001
, 0x27FFFFFF, 0x2FFFFFFF, 0x28000000, 0x28000001
, 0x37FFFFFF, 0x3FFFFFFF, 0x38000000, 0x38000001
, 0x57FFFFFF, 0x5FFFFFFF, 0x58000000, 0x58000001
, 0xA7FFFFFF, 0xAFFFFFFF, 0xA8000000, 0xA8000001
, 0xE7FFFFFF, 0xEFFFFFFF, 0xE8000000, 0xE8000001
, 0x7FFFFFFF, 0xFFFFFFFF
};
for (j = 0; j < SM_ARRAY_SIZE(idcs); j++) {
for (u = 0; u < SM_ARRAY_SIZE(idcs); u++) {
idc1 = idcs[j];
idc2 = idcs[u];
r = sm_snprintf(ta_id1, SMTP_STID_SIZE, SMTPS_STID_FORMAT,
idc1, smtpsid1);
SM_TEST(r != -1);
r = sm_snprintf(ta_id2, SMTP_STID_SIZE, SMTPS_STID_FORMAT,
idc2, smtpsid2);
SM_TEST(r != -1);
ret = sm_idcmp(ta_id1, ta_id2);
if (idc1 < idc2)
SM_TEST(ret < 0);
else if (idc1 > idc2)
SM_TEST(ret > 0);
else if (idc1 == idc2)
SM_TEST(ret == 0);
}
}
return 0;
}
static int
testidcmp(int st1, int st2)
{
int smtpsid1, smtpsid2;
for (smtpsid1 = 0; smtpsid1 <= SMTPS_MAX_SMTPS_ID; smtpsid1 += st1)
for (smtpsid2 = 0; smtpsid2 <= SMTPS_MAX_SMTPS_ID; smtpsid2 += st2)
tstidcmp(smtpsid1, smtpsid2);
return 0;
}
int
main(int argc, char **argv)
{
int c;
int st1, st2;
st1 = 4;
st2 = 9;
while ((c = getopt(argc, argv, "1:2:V")) != -1)
{
switch (c)
{
case '1':
st1 = strtol(optarg, NULL, 0);
break;
case '2':
st2 = strtol(optarg, NULL, 0);
break;
case 'V':
++Verbose;
break;
default:
break;
}
}
sm_test_begin(argc, argv, "test idcmp");
argc -= optind;
argv += optind;
(void) testidcmp(st1, st2);
return sm_test_end();
}
syntax highlighted by Code2HTML, v. 0.9.1