#!/usr/local/lib/perl -w use strict; use Carp; use Test; use XML::Filter::Dispatcher; use XML::SAX::PurePerl; ## Cannot use ParserFactory; LibXML 1.31 is broken. use UNIVERSAL; sub d { my ( $rule, $expected ) = @_; my $options = @_ && ref( $_[-1] ) eq "HASH" ? pop : {}; eval { XML::Filter::Dispatcher->new( Rules => [ $rule => undef ], %$options, ); }; ## Going to &ok like this causes ok() to report d()'s call point, ## making it eaier to find the failing test. unless ( $@ ) { @_ = ( "No exception thrown", $expected, $rule ); } elsif ( $@ =~ $expected ) { @_ = ( $@, $@, $rule ); } else { @_ = ( $@, $expected, $rule ); } goto &ok; } my @tests = ( sub { d "1 == 2", qr/'='.*'=='/ }, sub { d "1 && 2", qr/'and'.*'&&'/ }, sub { d "1 & 2", qr/'and'.*'&'/ }, sub { d "1 | 2", qr/NumericConstant.*union/ }, sub { d "1 || 2", qr/'or'.*'\|\|'/ }, ); plan tests => 0 + @tests; $_->() for @tests;