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 );
use lib qw( t/lib );

my $m;

my $out1;
my $out2;
my $out3;

my @tests = (
sub {
    $m = Machine(
        [ Intake => "XML::Filter::SAXT" => ( 1, 2, 3  ) ],
        [ undef,    "XML::SAX::Base"    => 4            ],
        [ undef,    "XML::SAX::Base"    => 5            ],
        [ undef,    "XML::SAX::Base"    => 6            ],
        \$out1,
        \$out2,
        \$out3,
    ),
    ok $m->isa( "XML::SAX::Machine" );
},

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

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

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

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

);

plan tests => scalar @tests;

$_->() for @tests;