Acme-Tests

 view release on metacpan or  search on metacpan

lib/Acme/Tests.pm  view on Meta::CPAN


use List::Util qw(shuffle);

field unanswered => {}, -init => '$self->load_tests()';
field tests => {}, -init => '$self->load_tests()';

sub data {
    my $package = shift || ref($self);
    local $SIG{__WARN__} = sub {};
    local $/;
    eval "package $package; <DATA>";
}

sub load_tests {
    my $lib = $self->data;
    my $tests = {};
    for(split(/\n----\n/,$lib)) {
        s/^\s+//; s/\s+$//s;
        next unless $_;
        my ($q,$a) = $_ =~ /(.+?)\n+Ans:\s*(.+?)\n*/s;
        next unless $q && $a;

lib/Acme/Tests.pm  view on Meta::CPAN

    return $q;
}

sub is_correct {
    my ($q,$a) = @_;
    $a =~ s/^\s+//gs;
    $a =~ s/\s+$//gs;
    return ($self->tests->{$q} eq lc($a))
}

__DATA__
Who Invents Perl ?
  (1) Larry Nelson
  (2) Larry Wall
  (3) Larry King
  (4) Some guy with "Perl" in his name
Ans: 2
----
2 + 2 = ?
Ans: 4
----

lib/Acme/Tests/Perl.pm  view on Meta::CPAN

package Acme::Tests::Perl;
use Acme::Tests -Base;
our $VERSION = '0.01';

__DATA__
Which one is an author id on CPAN ?
  (1) jhh
  (2) jhi
  (3) jhj
  (4) jhk
Ans: 2
----
Which debugger does lwall use ?
  (1) perl -d
  (2) gdb



( run in 0.851 second using v1.01-cache-2.11-cpan-140bd7fdf52 )