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

Test that lexical importing works, check BEGIN-ish stuff etc.

=cut

use strict;
use Test::More tests => 8;
use re::engine::Plugin ();

like "a", qr/^a$/, "import didn't run, perl's regex engine in effect";

BEGIN {
    re::engine::Plugin->import(
        exec => sub { $_[0]->pattern eq $_[1] }
    );
}

ok "^hello" =~ /^hello/ => "regex modified to match a literal pattern";

{
    BEGIN {
        re::engine::Plugin->import(
            exec => sub { $_[0]->pattern ne $_[1] }
        );
    }

    ok "^hello" !~ /^hello/ => "regex modified not to match a literal pattern";
    {
        BEGIN {
            re::engine::Plugin->import(
                exec => sub { $_[0]->pattern eq '^[abc]$' }
            );
        }
        ok "whatever" =~ /^[abc]$/ => "regex modified to match some exact nonsense";
        BEGIN { re::engine::Plugin->unimport };
        ok "whatever" !~ /^[abc]$/ => "regex modified to match some exact nonsense unimported";
    }
    ok "^hello" !~ /^hello/ => "regex modified not to match a literal pattern";
}

ok "^hello" =~ /^hello/ => "regex modified to match a literal pattern";

# Another import at the same scope
BEGIN {
    re::engine::Plugin->import(
        exec => sub { $_[0]->pattern ne $_[1] }
    );
}

ok "^hello" !~ /^hello/ => "regex modified not to match a literal pattern";