ossp-pkg/var/regression-tests/expand-character-class.c
#include "../internal.h"
static void class2string(char class[256], char* buf)
{
size_t i;
for (i = 0; i < 256; ++i)
{
if (class[i])
*buf++ = (char)i;
}
*buf = '\0';
}
struct test_case
{
const char* input;
const char* expected;
var_rc_t rc;
};
int main(int argc, char** argv)
{
struct test_case tests[] =
{
{ "", "", VAR_OK },
{ "abcabc", "abc", VAR_OK },
{ "a-z", "abcdefghijklmnopqrstuvwxyz", VAR_OK },
{ "a-eA-Eabcdef-", "-ABCDEabcdef", VAR_OK },
{ "-a-eA-Eabcdef-", "-ABCDEabcdef", VAR_OK },
{ "0-9-", "-0123456789", VAR_OK },
{ "g-a", NULL, VAR_INCORRECT_CLASS_SPEC }
};
size_t i;
char class[256];
char tmp[1024];
for (i = 0; i < sizeof(tests) / sizeof(struct test_case); ++i)
{
if (expand_character_class(tests[i].input, class) != tests[i].rc)
{
printf("expand_character_class() failed test case %d.\n", i);
return 1;
}
if (tests[i].expected != NULL)
{
class2string(class, tmp);
if (strcmp(tmp, tests[i].expected) != 0)
{
printf("expand_character_class() failed test case %d.\n", i);
return 1;
}
}
}
return 0;
}