The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl
use lib qw (lib ../lib);
use warnings;
use strict;
use Test::More tests => 12;
use Config::Mini;

package Foo;

sub new { my $class = shift; return bless { @_ }, $class };


package Bar;

sub new { my $class = shift; return bless { @_ }, $class };


package main;

$SIG{__WARN__} = sub {};

my $data = <<EOF;
  foo = bar
  baz = buz

  [obj:foo]
  package = Foo
  key1 = val1
  key2 = val2

  [obj:bar]
  package = Bar
  key1 = val1
  key2 = val2

EOF

Config::Mini::parse_data ($data);
my @obj   = Config::Mini::select ('^obj:');

my ($foo) = map { $_->isa ('Foo') ? $_ : () } @obj;
my ($bar) = map { $_->isa ('Bar') ? $_ : () } @obj;

ok (defined $foo);
is ($foo->{'package'} => 'Foo');
ok (defined $foo->{'__package'});
is ($foo->{'__package'}->[0] => 'Foo');
is ($foo->{'key1'} => 'val1');
is ($foo->{'key2'} => 'val2');

ok (defined $bar);
is ($bar->{'package'} => 'Bar');
ok (defined $bar->{'__package'});
is ($bar->{'__package'}->[0] => 'Bar');
is ($bar->{'key1'} => 'val1');
is ($bar->{'key2'} => 'val2');