summaryrefslogtreecommitdiff
path: root/test/lex-auto.c
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2008-05-03 10:10:32 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2008-05-03 10:10:32 +0000
commit9c0bf11dd144d09c20f16acaf3d40030b4534ec8 (patch)
tree44a72258f16419913f12b11ad9a4a78bb0964570 /test/lex-auto.c
parenta7c8ab91210e368b8b2f23e1d79d42ad1b364560 (diff)
downloadlibcss-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.c21
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;