|
Packit Service |
b38f0b |
/* HEADER Testing read_config_read_octet_string_const(). */
|
|
Packit Service |
b38f0b |
|
|
Packit Service |
b38f0b |
struct read_config_testcase {
|
|
Packit Service |
b38f0b |
/*
|
|
Packit Service |
b38f0b |
* inputs
|
|
Packit Service |
b38f0b |
*/
|
|
Packit Service |
b38f0b |
const char *(*pf) (const char * readfrom, u_char ** str,
|
|
Packit Service |
b38f0b |
size_t * len);
|
|
Packit Service |
b38f0b |
const char *readfrom;
|
|
Packit Service |
b38f0b |
size_t obuf_len;
|
|
Packit Service |
b38f0b |
|
|
Packit Service |
b38f0b |
/*
|
|
Packit Service |
b38f0b |
* expected outputs
|
|
Packit Service |
b38f0b |
*/
|
|
Packit Service |
b38f0b |
size_t expected_offset;
|
|
Packit Service |
b38f0b |
const u_char *expected_output;
|
|
Packit Service |
b38f0b |
size_t expected_len;
|
|
Packit Service |
b38f0b |
};
|
|
Packit Service |
b38f0b |
|
|
Packit Service |
b38f0b |
static const u_char obuf1[] = { 1, 0, 2 };
|
|
Packit Service |
b38f0b |
static const u_char obuf2[] = { 'a', 'b', 'c', 0 };
|
|
Packit Service |
b38f0b |
|
|
Packit Service |
b38f0b |
static const struct read_config_testcase test_input[] = {
|
|
Packit Service |
b38f0b |
{ &read_config_read_octet_string_const, "", 1, -1, NULL, 0 },
|
|
Packit Service |
b38f0b |
{ &read_config_read_octet_string_const, "0x0", 1, -1, NULL, 1 },
|
|
Packit Service |
b38f0b |
{ &read_config_read_octet_string_const, "0x0 0", 1, -1, NULL, 1 },
|
|
Packit Service |
b38f0b |
|
|
Packit Service |
b38f0b |
{ &read_config_read_octet_string_const, "0x010002", 1, -1, NULL, 0 },
|
|
Packit Service |
b38f0b |
{ &read_config_read_octet_string_const, "0x010002", 2, -1, NULL, 0 },
|
|
Packit Service |
b38f0b |
{ &read_config_read_octet_string_const, "0x010002", 3, -1, obuf1, 0 },
|
|
Packit Service |
b38f0b |
{ &read_config_read_octet_string_const, "0x010002", 4, -1, obuf1, 3 },
|
|
Packit Service |
b38f0b |
{ &read_config_read_octet_string_const, "0x010002 0", 4, 9, obuf1, 3 },
|
|
Packit Service |
b38f0b |
{ &read_config_read_octet_string_const, "0x010002", 0, -1, obuf1, 3 },
|
|
Packit Service |
b38f0b |
|
|
Packit Service |
b38f0b |
{ &read_config_read_octet_string_const, "abc", 1, -1, NULL, 0 },
|
|
Packit Service |
b38f0b |
{ &read_config_read_octet_string_const, "abc z", 1, 4, NULL, 0 },
|
|
Packit Service |
b38f0b |
{ &read_config_read_octet_string_const, "abc", 2, -1, NULL, 1 },
|
|
Packit Service |
b38f0b |
{ &read_config_read_octet_string_const, "abc", 3, -1, obuf2, 2 },
|
|
Packit Service |
b38f0b |
{ &read_config_read_octet_string_const, "abc", 4, -1, obuf2, 3 },
|
|
Packit Service |
b38f0b |
{ &read_config_read_octet_string_const, "abc z", 4, 4, obuf2, 3 },
|
|
Packit Service |
b38f0b |
{ &read_config_read_octet_string_const, "abc", 0, -1, obuf2, 3 },
|
|
Packit Service |
b38f0b |
};
|
|
Packit Service |
b38f0b |
|
|
Packit Service |
b38f0b |
unsigned int i, j, ok;
|
|
Packit Service |
b38f0b |
|
|
Packit Service |
b38f0b |
for (i = 0; i < sizeof(test_input) / sizeof(test_input[0]); i++) {
|
|
Packit Service |
b38f0b |
const struct read_config_testcase *const p = &test_input[i];
|
|
Packit Service |
b38f0b |
size_t len = p->obuf_len;
|
|
Packit Service |
b38f0b |
u_char *str = len > 0 ? malloc(len) : NULL;
|
|
Packit Service |
b38f0b |
const char *result;
|
|
Packit Service |
b38f0b |
size_t offset;
|
|
Packit Service |
b38f0b |
|
|
Packit Service |
b38f0b |
fflush(stdout);
|
|
Packit Service |
b38f0b |
result = (p->pf) (p->readfrom, &str, &len;;
|
|
Packit Service |
b38f0b |
offset = result ? result - p->readfrom : -1;
|
|
Packit Service |
b38f0b |
OKF(offset == p->expected_offset,
|
|
Packit Service |
b38f0b |
("test %d: expected offset %" NETSNMP_PRIz "d, got offset %"
|
|
Packit Service |
b38f0b |
NETSNMP_PRIz "d", i, p->expected_offset, offset));
|
|
Packit Service |
b38f0b |
if (offset == p->expected_offset) {
|
|
Packit Service |
b38f0b |
OKF(len == p->expected_len,
|
|
Packit Service |
b38f0b |
("test %d: expected length %" NETSNMP_PRIz "d, got length %"
|
|
Packit Service |
b38f0b |
NETSNMP_PRIz "d", i, p->expected_len, len));
|
|
Packit Service |
b38f0b |
if (len == p->expected_len) {
|
|
Packit Service |
b38f0b |
ok = len < 0 || !p->expected_output
|
|
Packit Service |
b38f0b |
|| memcmp(str, p->expected_output, len) == 0
|
|
Packit Service |
b38f0b |
|| p->expected_output[len] != 0;
|
|
Packit Service |
b38f0b |
OKF(ok, ("test %d: output buffer mismatch", i));
|
|
Packit Service |
b38f0b |
if (!ok) {
|
|
Packit Service |
b38f0b |
printf("Expected: ");
|
|
Packit Service |
b38f0b |
for (j = 0; j < p->expected_len; ++j)
|
|
Packit Service |
b38f0b |
printf("%02x ", p->expected_output[j]);
|
|
Packit Service |
b38f0b |
printf("\nActual: ");
|
|
Packit Service |
b38f0b |
for (j = 0; j < len; ++j)
|
|
Packit Service |
b38f0b |
printf("%02x ", str[j]);
|
|
Packit Service |
b38f0b |
printf("\n");
|
|
Packit Service |
b38f0b |
}
|
|
Packit Service |
b38f0b |
}
|
|
Packit Service |
b38f0b |
}
|
|
Packit Service |
b38f0b |
|
|
Packit Service |
b38f0b |
if (str)
|
|
Packit Service |
b38f0b |
free(str);
|
|
Packit Service |
b38f0b |
}
|