OSSP CVS Repository

ossp - ossp-pkg/var/regression-tests/expand-named-characters.c
Not logged in
[Honeypot]  [Browse]  [Directory]  [Home]  [Login
[Reports]  [Search]  [Ticket]  [Timeline
  [Raw

ossp-pkg/var/regression-tests/expand-named-characters.c
#include "../internal.h"

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                         },
        { "\\",                   NULL,               VAR_INCOMPLETE_NAMED_CHARACTER },
        { "hello world",          "hello world",      VAR_OK                         },
        { "\\n",                  "\n",               VAR_OK                         },
        {"\\t",                   "\t",               VAR_OK                         },
        { "\\rhello\\tworld\\n",  "\rhello\tworld\n", VAR_OK                         },
        { "\\x5a\\x5A",           "ZZ",               VAR_OK                         },
        { "\\x5g\\x5A",           NULL,               VAR_INVALID_HEX                },
        { "\\x5",                 NULL,               VAR_INCOMPLETE_HEX             },
        { "\\033",                "\033",             VAR_OK                         },
        { "\\03",                 NULL,               VAR_INCOMPLETE_OCTAL           },
        { "\\038",                NULL,               VAR_INVALID_OCTAL              },
        { "\\400",                NULL,               VAR_OCTAL_TOO_LARGE            },
        { "\\x{4243}",            "BC",               VAR_OK                         },
        { "\\x{}",                "",                 VAR_OK                         },
        { "\\x{5a5A5a5A}",        "ZZZZ",             VAR_OK                         },
        { "\\x{",                 NULL,               VAR_INCOMPLETE_GROUPED_HEX     },
        { "x\\x{5a5A5a5A}a",      "xZZZZa",           VAR_OK                         },
        { "x\\x{5a5A5a\\0015A}a", NULL,               VAR_INVALID_HEX                },
        { "x\\x{5a\\x{5a}5A}a",   NULL,               VAR_INVALID_HEX                }
        };
    size_t i;
    char tmp[1024];

    for (i = 0; i < sizeof(tests) / sizeof(struct test_case); ++i)
        {
        if (expand_named_characters(tests[i].input, strlen(tests[i].input), tmp) != tests[i].rc ||
            (tests[i].expected != NULL && strcmp(tmp, tests[i].expected) != 0))
            {
            printf("expand_named_characters() failed test case %d.\n", i);
            return 1;
            }
        }

    return 0;
    }

CVSTrac 2.0.1