Commit 6ecc6a6c authored by Geoff Simmons's avatar Geoff Simmons

test format.c/get_fld()

parent f17f7347
......@@ -149,17 +149,22 @@ get_hdr(tx_t *tx, enum VSL_tag_e tag, vre_t *hdr_re)
return hdr_payload;
}
/*
* Get the nth whitespace-separated field from str, counting from 0.
*/
char *
get_fld(char *str, int n)
get_fld(const char *str, int n)
{
char *fld = NULL, *s;
char *fld = NULL, *s, cp[BUFSIZ];
int i = 0;
s = str;
AN(str);
strcpy(cp, str);
s = cp;
do {
fld = strtok(s, " \t");
s = NULL;
} while (++i < n && fld != NULL);
} while (i++ < n && fld != NULL);
return fld;
}
......
......@@ -41,6 +41,6 @@ vre_t *time_start_re;
void get_payload(logline_t *rec);
logline_t *get_tag(tx_t *tx, enum VSL_tag_e tag);
char *get_hdr(tx_t *tx, enum VSL_tag_e tag, vre_t *hdr_re);
char *get_fld(char *str, int n);
char *get_fld(const char *str, int n);
char *get_rec_fld(logline_t *rec, int n);
double get_tm(tx_t *tx);
......@@ -38,6 +38,7 @@
#include "../format.h"
#define NRECORDS 10
#define SHORT_STRING "foo bar baz quux"
int tests_run = 0;
......@@ -79,7 +80,6 @@ static const char
MAN(chunk.data);
/* Record with one chunk */
#define SHORT_STRING "foo bar baz quux"
rec.len = strlen(SHORT_STRING);
sprintf(chunk.data, "%s", SHORT_STRING);
VSTAILQ_INSERT_TAIL(&rec.chunks, &chunk, chunklist);
......@@ -206,6 +206,45 @@ static const char
return NULL;
}
static const char
*test_format_get_fld(void)
{
char *fld, str[sizeof(SHORT_STRING)];
printf("... testing get_fld()\n");
strcpy(str, SHORT_STRING);
fld = get_fld(str, 0);
MAN(fld);
MASSERT(strcmp(fld, "foo") == 0);
fld = get_fld(str, 1);
MAN(fld);
MASSERT(strcmp(fld, "bar") == 0);
fld = get_fld(str, 2);
MAN(fld);
MASSERT(strcmp(fld, "baz") == 0);
fld = get_fld(str, 3);
MAN(fld);
MASSERT(strcmp(fld, "quux") == 0);
fld = get_fld(str, 4);
MAZ(fld);
strcpy(str, " ");
fld = get_fld(str, 0);
MAZ(fld);
fld = get_fld(str, 1);
MAZ(fld);
fld = get_fld(str, 2);
MAZ(fld);
return NULL;
}
static const char
*all_tests(void)
{
......@@ -213,6 +252,7 @@ static const char
mu_run_test(test_format_get_payload);
mu_run_test(test_format_get_tag);
mu_run_test(test_format_get_hdr);
mu_run_test(test_format_get_fld);
return NULL;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment