The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;

use Test;
use XML::SAX::Machines qw( Machine );

my $m;

my $out;

my @tests = (
sub {
    $out = "";
    $m = Machine(
         [ Intake => "XML::Filter::Distributor" => qw( A B ) ],
            [ A => "XML::SAX::Base" => qw( Merger ) ],
            [ B => "XML::SAX::Base" => qw( Merger ) ],
        [ Merger => "XML::Filter::Merger" => qw( Output ) ],
        [ Output => \$out ],
    );
    $m->Intake->set_aggregator( $m->Merger );
    ok $m->isa( "XML::SAX::Machine" );
#use XML::Handler::Machine2GraphViz;
#open FOO, ">foo.png" or die $!;
#print FOO machine2graphviz( $m )->as_png;
#close FOO;
},

sub {
    $out = "";
    ok $m->parse_string( "<foo><bar /></foo>" );
},

sub {
    $out =~ m{<foo\s*><bar\s*/><bar\s*/></foo\s*>}
        ? ok 1
        : ok $out, "something like <foo><bar /></foo>" ;
},
);

plan tests => scalar @tests;

$_->() for @tests;