Acme-EyeDrops
view release on metacpan or search on metacpan
t/03_Larry.t view on Meta::CPAN
#!/usr/bin/perl
# 03_Larry.t (was limit.t)
use strict;
use Acme::EyeDrops qw(sightly regex_eval_sightly);
select(STDERR);$|=1;select(STDOUT);$|=1; # autoflush
# --------------------------------------------------
sub build_file {
my ($f, $d) = @_;
local *F; open(F, '>'.$f) or die "open '$f': $!";
print F $d or die "write '$f': $!"; close(F);
}
# --------------------------------------------------
print "1..45\n";
# Exact fit is 215 characters.
my $exact = 215;
my $tmpf = 'bill.tmp';
# --------------------------------------------------
my $itest = 0;
my $prog;
my $last;
sub test_one {
my ($e, $ostr, $enlf) = @_;
build_file($tmpf, $prog);
my $outstr = `$^X -w -Mstrict $tmpf`;
my $rc = $? >> 8;
$rc == 0 or print "not ";
++$itest; print "ok $itest - $e rc\n";
$outstr eq $ostr or print "not ";
++$itest; print "ok $itest - $e output\n";
$prog =~ s/^.+\n// if $] >= 5.017; # remove leading use re 'eval' line
my $nlf = $prog =~ tr/\n//;
$nlf == $enlf or print "not ";
++$itest; print "ok $itest - $e nlf $enlf\n";
$last = chop($prog);
$last eq "\n" or print "not ";
++$itest; print "ok $itest - $e last is newline\n";
}
# --------------------------------------------------
my $srcstr = qq#print "abc\\n";\n#;
my $sightlystr = regex_eval_sightly($srcstr);
length($sightlystr) == $exact or print "not ";
++$itest; print "ok $itest - exact 215\n";
# Exact fit abc ------------------------------------
$prog = sightly({ Width => $exact,
SourceString => $srcstr,
InformHandler => sub {},
Regex => 1 } );
test_one('Exact fit abc', "abc\n", 1);
length($prog) == $exact or print "not ";
++$itest; print "ok $itest\n";
$prog eq $sightlystr or print "not ";
++$itest; print "ok $itest\n";
( run in 1.025 second using v1.01-cache-2.11-cpan-f56aa216473 )