From 28b06ed590c8e0d2acb4a0d42e4eca4d6f0aef3c Mon Sep 17 00:00:00 2001 From: Andrew Sidwell Date: Thu, 19 Jun 2008 01:49:02 +0000 Subject: Add CDATA tests and the infrastructure to support them. svn path=/trunk/hubbub/; revision=4410 --- test/data/tokeniser2/INDEX | 1 + test/data/tokeniser2/cdata.test | 23 +++++++++++++++++++++++ test/tokeniser2.c | 11 +++++++++++ test/tokeniser3.c | 11 +++++++++++ 4 files changed, 46 insertions(+) create mode 100644 test/data/tokeniser2/cdata.test (limited to 'test') diff --git a/test/data/tokeniser2/INDEX b/test/data/tokeniser2/INDEX index 00c5e01..8c0bc41 100644 --- a/test/data/tokeniser2/INDEX +++ b/test/data/tokeniser2/INDEX @@ -9,3 +9,4 @@ test4.test html5lib tests (part 4) contentModelFlags.test html5lib content model tests entities.test html5lib entity tests escapeFlag.test html5lib escape flag tests +cdata.test CDATA section tests diff --git a/test/data/tokeniser2/cdata.test b/test/data/tokeniser2/cdata.test new file mode 100644 index 0000000..fb4fa8a --- /dev/null +++ b/test/data/tokeniser2/cdata.test @@ -0,0 +1,23 @@ +{"tests": [ + +{"description":"Basic CDATA test", +"processCDATA":true, +"input":"", +"output":[["Character", "test"]]}, + +{"description":"Unfinished CDATA test", +"processCDATA":true, +"input":"process_cdata) { + params.process_cdata = ctx->process_cdata; + assert(hubbub_tokeniser_setopt(tok, + HUBBUB_TOKENISER_PROCESS_CDATA, + ¶ms) == HUBBUB_OK); + } + params.buffer_handler.handler = buffer_handler; params.buffer_handler.pw = ctx; assert(hubbub_tokeniser_setopt(tok, diff --git a/test/tokeniser3.c b/test/tokeniser3.c index 7b16ba0..523bfcd 100644 --- a/test/tokeniser3.c +++ b/test/tokeniser3.c @@ -25,6 +25,7 @@ typedef struct context { const char *last_start_tag; struct array_list *content_model; + bool process_cdata; } context; static void run_test(context *ctx); @@ -97,6 +98,9 @@ int main(int argc, char **argv) } else if (strcmp(key, "contentModelFlags") == 0) { ctx.content_model = json_object_get_array(val); + } else if (strcmp(key, "processCDATA") == 0) { + ctx.process_cdata = + json_object_get_boolean(val); } } @@ -154,6 +158,13 @@ void run_test(context *ctx) assert(hubbub_tokeniser_run(tok) == HUBBUB_OK); } + if (ctx->process_cdata) { + params.process_cdata = ctx->process_cdata; + assert(hubbub_tokeniser_setopt(tok, + HUBBUB_TOKENISER_PROCESS_CDATA, + ¶ms) == HUBBUB_OK); + } + params.buffer_handler.handler = buffer_handler; params.buffer_handler.pw = ctx; assert(hubbub_tokeniser_setopt(tok, -- cgit v1.2.3