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

# hardcoded sorted list of our drivers
my @all_drivers = sort qw( CSV DBM Pg SQLite SQLite2 mysql );

# intersection with DBI->available_drivers
my %all_drivers = map { $_ => 1 } @all_drivers;
my @available_drivers
    = sort grep { exists $all_drivers{$_} } DBI->available_drivers;

plan tests => 3;

# minimal setup
Test::Database->clean_config();
Test::Database->load_drivers();

# existing Test::Database::Driver:: drivers
is_deeply( [ Test::Database->list_drivers('all') ],
    \@all_drivers, q{list_drivers('all')} );

# available DBI drivers
is_deeply( [ Test::Database->list_drivers('available') ],
    \@available_drivers, q{list_drivers('available')} );

# available DBI drivers we could load (should only be file-based)
my @filebased
    = grep { "Test::Database::Driver::$_"->is_filebased() } @available_drivers;
is_deeply( [ Test::Database->list_drivers() ], \@filebased,
    'list_drivers()' );