=pod

=for comment
DO NOT EDIT. This Pod was generated by Swim.
See http://github.com/ingydotnet/swim-pm#readme

=encoding utf8

=head1 NAME

Alt::Assert - Assert alternate module implementation

=head1 SYNOPSIS

Assuming there is a CPAN module Foo::Bar and mst wants to write an ALTernate
called Alt::Foo::Bar::MSTROUT.

In mst's Foo::Bar, there is the following line:

    use constant ALT => 'MSTROUT';

In the alt module:

    package Alt::Foo::Bar::MSTROUT;
    use Alt::Assert; # imports assert()
    1;

Users use mst's Foo::Bar as normal, just like they would use the
original Foo::Bar:

    use Foo::Bar -various => [qw(weird import)], {API=>'things'};

or:

    require Foo::Bar;

If they want to assert they have the mst version, they can:

    use Foo::Bar -various => [qw(weird import)], {API=>'things'};
    use Alt::Foo::Bar::MSTROUT;

or:

    require Foo::Bar;
    require Alt::Foo::Bar::MSTROUT;
    Alt::Foo::Bar::MSTROUT->assert;

=head1 DESCRIPTION

Alt::Assert can be used to assert that the loaded module is the wanted
alternate implementation. Using the Synopsis' example, there can be different
Foo::Bar installed, either from the original distribution, or from one of the
alternate ones. Each alternate might be slightly incompatible with the
original. The existence of Alt::Foo::Bar::MSTROUT in the installation does not
necessarily ensure that the installed Foo::Bar is from the same alternate
distribution, since an installer can replace Foo::Bar from another
distribution. That is why one might need to do this assertion.

=head1 SEE ALSO

=over

=item * L<Alt>

=back

=head1 AUTHOR

Ingy döt Net <ingy@cpan.org>

=head1 COPYRIGHT

Copyright 2012-2014. Ingy döt Net.

See L<http://www.perl.com/perl/misc/Artistic.html>

=cut
