summaryrefslogtreecommitdiff
path: root/t/defaulted.t
diff options
context:
space:
mode:
Diffstat (limited to 't/defaulted.t')
-rw-r--r--t/defaulted.t50
1 files changed, 50 insertions, 0 deletions
diff --git a/t/defaulted.t b/t/defaulted.t
new file mode 100644
index 0000000..a3dfb91
--- /dev/null
+++ b/t/defaulted.t
@@ -0,0 +1,50 @@
+BEGIN {print "1..4\n";}
+END {print "not ok 1\n" unless $loaded;}
+use XML::Parser;
+$loaded = 1;
+print "ok 1\n";
+
+$doc =<<'End_of_Doc;';
+<!DOCTYPE foo [
+<!ATTLIST bar zz CDATA 'there'>
+]>
+<foo>
+ <bar xx="hello"/>
+ <bar zz="other"/>
+</foo>
+End_of_Doc;
+
+sub st {
+ my $xp = shift;
+ my $el = shift;
+
+ if ($el eq 'bar') {
+ my %atts = @_;
+ my %isdflt;
+ my $specified = $xp->specified_attr;
+
+ for (my $i = $specified; $i < @_; $i += 2) {
+ $isdflt{$_[$i]} = 1;
+ }
+
+ if (defined $atts{xx}) {
+ print 'not '
+ if $isdflt{'xx'};
+ print "ok 2\n";
+
+ print 'not '
+ unless $isdflt{'zz'};
+ print "ok 3\n";
+ }
+ else {
+ print 'not '
+ if $isdflt{'zz'};
+ print "ok 4\n";
+ }
+
+ }
+}
+
+$p = new XML::Parser(Handlers => {Start => \&st});
+
+$p->parse($doc);