summaryrefslogtreecommitdiff
path: root/t/cdata.t
diff options
context:
space:
mode:
Diffstat (limited to 't/cdata.t')
-rw-r--r--t/cdata.t40
1 files changed, 40 insertions, 0 deletions
diff --git a/t/cdata.t b/t/cdata.t
new file mode 100644
index 0000000..5e1190b
--- /dev/null
+++ b/t/cdata.t
@@ -0,0 +1,40 @@
+BEGIN {print "1..2\n";}
+END {print "not ok 1\n" unless $loaded;}
+use XML::Parser;
+$loaded = 1;
+print "ok 1\n";
+
+my $count = 0;
+
+my $cdata_part = "<<< & > '' << &&&>&&&&;<";
+
+my $doc = "<foo> hello <![CDATA[$cdata_part]]> there</foo>";
+
+my $acc = '';
+
+sub ch {
+ my ($xp, $data) = @_;
+
+ $acc .= $data;
+}
+
+sub stcd {
+ my $xp = shift;
+ $xp->setHandlers(Char => \&ch);
+}
+
+sub ecd {
+ my $xp = shift;
+ $xp->setHandlers(Char => 0);
+}
+
+$parser = new XML::Parser(ErrorContext => 2,
+ Handlers => {CdataStart => \&stcd,
+ CdataEnd => \&ecd});
+
+$parser->parse($doc);
+
+print "not "
+ unless ($acc eq $cdata_part);
+print "ok 2\n";
+