/*
* Copyright (c) 2004, 2006 Sendmail, Inc. and its suppliers.
* All rights reserved.
*
* By using this file, you agree to the terms and conditions set
* forth in the LICENSE file which can be found at the top level of
* the sendmail distribution.
*
*/
#include "sm/generic.h"
SM_RCSID("@(#)$Id: t-dbgcat.c,v 1.4 2006/01/05 22:41:53 ca Exp $")
#include "sm/error.h"
#include "sm/assert.h"
#include "sm/memops.h"
#include "sm/util.h"
#include "sm/test.h"
/*
** test setting debug levels in an array
** sm_set_dbgcats()
*/
#define DBG_LEN 32
uint dbg[DBG_LEN];
int Verbose = 0;
static void
dbginit(void)
{
sm_memzero(dbg, sizeof(dbg));
}
static void
dbglc(void)
{
sm_ret_T ret;
uint i;
char *buf;
char *ptr;
buf = "1";
ptr = buf;
dbginit();
ret = sm_set_dbgcats(&ptr, dbg, SM_ARRAY_SIZE(dbg));
SM_TEST(ret == SM_SUCCESS);
SM_TEST(dbg[1] == 1);
buf = "1-3";
ptr = buf;
dbginit();
ret = sm_set_dbgcats(&ptr, dbg, SM_ARRAY_SIZE(dbg));
SM_TEST(ret == SM_SUCCESS);
for (i = 1; i <= 3; i++)
SM_TEST(dbg[i] == 1);
buf = "1-3.5";
ptr = buf;
dbginit();
ret = sm_set_dbgcats(&ptr, dbg, SM_ARRAY_SIZE(dbg));
SM_TEST(ret == SM_SUCCESS);
for (i = 1; i <= 3; i++)
SM_TEST(dbg[i] == 5);
buf = "1-3.5,4-9.3,12.99";
ptr = buf;
dbginit();
ret = sm_set_dbgcats(&ptr, dbg, SM_ARRAY_SIZE(dbg));
SM_TEST(ret == SM_SUCCESS);
for (i = 1; i <= 3; i++)
SM_TEST(dbg[i] == 5);
for (i = 4; i <= 9; i++)
SM_TEST(dbg[i] == 3);
SM_TEST(dbg[12] == 99);
buf = "1-3.4,5.3,9-11";
ptr = buf;
dbginit();
ret = sm_set_dbgcats(&ptr, dbg, SM_ARRAY_SIZE(dbg));
SM_TEST(ret == SM_SUCCESS);
for (i = 1; i <= 3; i++)
SM_TEST(dbg[i] == 4);
SM_TEST(dbg[5] == 3);
for (i = 9; i <= 11; i++)
SM_TEST(dbg[i] == 1);
buf = "1-";
ptr = buf;
dbginit();
ret = sm_set_dbgcats(&ptr, dbg, SM_ARRAY_SIZE(dbg));
SM_TEST(ret != SM_SUCCESS);
buf = "1-33";
ptr = buf;
dbginit();
ret = sm_set_dbgcats(&ptr, dbg, SM_ARRAY_SIZE(dbg));
SM_TEST(ret != SM_SUCCESS);
buf = "32-33";
ptr = buf;
dbginit();
ret = sm_set_dbgcats(&ptr, dbg, SM_ARRAY_SIZE(dbg));
SM_TEST(ret != SM_SUCCESS);
buf = "31-30";
ptr = buf;
dbginit();
ret = sm_set_dbgcats(&ptr, dbg, SM_ARRAY_SIZE(dbg));
SM_TEST(ret != SM_SUCCESS);
buf = "-30";
ptr = buf;
dbginit();
ret = sm_set_dbgcats(&ptr, dbg, SM_ARRAY_SIZE(dbg));
SM_TEST(ret != SM_SUCCESS);
buf = "-";
ptr = buf;
dbginit();
ret = sm_set_dbgcats(&ptr, dbg, SM_ARRAY_SIZE(dbg));
SM_TEST(ret != SM_SUCCESS);
buf = "";
ptr = buf;
dbginit();
ret = sm_set_dbgcats(&ptr, dbg, SM_ARRAY_SIZE(dbg));
SM_TEST(ret != SM_SUCCESS);
buf = "3a-33";
ptr = buf;
dbginit();
ret = sm_set_dbgcats(&ptr, dbg, SM_ARRAY_SIZE(dbg));
SM_TEST(ret != SM_SUCCESS);
buf = "3-3/4";
ptr = buf;
dbginit();
ret = sm_set_dbgcats(&ptr, dbg, SM_ARRAY_SIZE(dbg));
SM_TEST(ret != SM_SUCCESS);
}
int
main(int argc, char *argv[])
{
sm_ret_T ret;
int c;
char *prg, *ptr;
opterr = 0;
Verbose = 0;
prg = argv[0];
while ((c = getopt(argc, argv, "d:V")) != -1)
{
switch (c)
{
case 'd':
dbginit();
ptr = optarg;
ret = sm_set_dbgcats(&ptr, dbg, SM_ARRAY_SIZE(dbg));
SM_TEST(ret == SM_SUCCESS);
break;
case 'V':
++Verbose;
break;
default:
exit(1);
}
}
sm_test_begin(argc, argv, "test debug cats");
argc -= optind;
argv += optind;
dbglc();
return sm_test_end();
}
syntax highlighted by Code2HTML, v. 0.9.1