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

use Test::More;

use Scalar::Util 'blessed';

use lib 't/lib';

{
  package Class;
  use TestMexp
    foo => { -as => 'bar' },
    foo => { -as => 'baz' },
    blessed_method => { -as => 'lost_bless' };

  use TestMexp
    {
      installer => Sub::Exporter::ForMethods::method_installer({rebless => 1})
    },
    blessed_method => { -as => 'kept_bless' };

  use TestDexp
    foo => { -as => 'quux' };

  sub new { bless {} }
}

{
  my $mess = eval { Class->new->bar };
  like($mess, qr{Class::bar}, "bar method appears under its own name");
}

{
  my $mess = eval { Class->new->baz };
  like($mess, qr{Class::baz}, "baz method appears under its own name");
}

{
  my $mess = eval { Class->new->quux };
  unlike($mess, qr{Class::quuz}, "quuz method doesn't have its own name");
}

is( blessed(Class->can('lost_bless')), undef, "we normally do not rebless");

is( blessed(Class->can('kept_bless')), 'TestMexp', "...but we can");

done_testing;