/* */ #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(); }