diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2008-05-03 10:10:32 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2008-05-03 10:10:32 +0000 |
commit | 9c0bf11dd144d09c20f16acaf3d40030b4534ec8 (patch) | |
tree | 44a72258f16419913f12b11ad9a4a78bb0964570 /test/lex-auto.c | |
parent | a7c8ab91210e368b8b2f23e1d79d42ad1b364560 (diff) | |
download | libcss-9c0bf11dd144d09c20f16acaf3d40030b4534ec8.tar.gz libcss-9c0bf11dd144d09c20f16acaf3d40030b4534ec8.tar.bz2 |
Fix testdriver to accept # in input
Significantly more tests for the lexer -- this basically covers all the non-OOD/EOF cases
Fix bug in lexing of "/x" -- the CHAR(/) was getting dropped by the "don't emit comment tokens" logic
svn path=/trunk/libcss/; revision=4120
Diffstat (limited to 'test/lex-auto.c')
-rw-r--r-- | test/lex-auto.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/test/lex-auto.c b/test/lex-auto.c index 196836b..9e2d018 100644 --- a/test/lex-auto.c +++ b/test/lex-auto.c @@ -107,8 +107,16 @@ bool handle_line(const char *data, size_t datalen, void *pw) ctx->expused = 0; } - ctx->indata = (strncasecmp(data+1, "data", 4) == 0); - ctx->inexp = (strncasecmp(data+1, "expected", 8) == 0); + if (ctx->indata && strncasecmp(data+1, "expected", 8) == 0) { + ctx->indata = false; + ctx->inexp = true; + } else if (!ctx->indata) { + ctx->indata = (strncasecmp(data+1, "data", 4) == 0); + ctx->inexp = (strncasecmp(data+1, "expected", 8) == 0); + } else { + memcpy(ctx->buf + ctx->bufused, data, datalen); + ctx->bufused += datalen; + } } else { if (ctx->indata) { memcpy(ctx->buf + ctx->bufused, data, datalen); @@ -137,13 +145,16 @@ void parse_expected(line_ctx *ctx, const char *data, size_t len) /* Append to list of expected tokens */ if (ctx->expused == ctx->explen) { + size_t num = ctx->explen == 0 ? 4 : ctx->explen; + exp_entry *temp = realloc(ctx->exp, - ctx->explen * 2 * sizeof(exp_entry)); - if (temp == NULL) + num * 2 * sizeof(exp_entry)); + if (temp == NULL) { assert(0 && "No memory for expected tokens"); + } ctx->exp = temp; - ctx->explen *= 2; + ctx->explen = num * 2; } ctx->exp[ctx->expused].type = type; |