Acme-EyeDrops
view release on metacpan or search on metacpan
$h->{$a[$i]} eq $hexp->{$aexp[$i]} or print "not ";
++$itest; print "ok $itest - _get_properties 4 $e\n";
}
}
sub test_one_find_eye_shapes {
my ($e, $s, $sexp) = @_;
my @shapes = find_eye_shapes(@$s);
scalar(@shapes) == scalar(@$sexp) or print "not ";
++$itest; print "ok $itest - find_eye_shapes 1 $e\n";
return unless @$sexp;
my $min = @shapes; $min = @$sexp if @$sexp < $min;
for my $i (0 .. $min-1) {
$shapes[$i] eq $sexp->[$i] or print "not ";
++$itest; print "ok $itest - find_eye_shapes 2 $e\n";
}
}
sub test_one__find_eye_shapes {
my ($e, $s, $sexp) = @_;
my @shapes = Acme::EyeDrops::_find_eye_shapes('.', @$s);
scalar(@shapes) == scalar(@$sexp) or print "not ";
++$itest; print "ok $itest - _find_eye_shapes 1 $e\n";
return unless @$sexp;
my $min = @shapes; $min = @$sexp if @$sexp < $min;
for my $i (0 .. $min-1) {
$shapes[$i] eq $sexp->[$i] or print "not ";
++$itest; print "ok $itest - _find_eye_shapes 2 $e\n";
}
}
sub get_prop_names {
my %h;
for my $s (get_eye_shapes()) {
my $p = get_eye_properties($s) or next; # no properties
my @k = keys(%{$p}) or next;
for my $k (@k) { push(@{$h{$k}}, $s) }
}
return \%h;
}
# Hacked from _get_eye_shapes().
sub _get_eyp_shapes {
my $d = shift; local *D;
opendir(D, $d) or die "opendir '$d': $!";
my @e = sort map(/(.+)\.eyp$/, readdir(D)); closedir(D); @e;
}
# -----------------------------------------------------------------------
# slurp_yerself() tests (primitive)
my $eyedrops_pm = Acme::EyeDrops::slurp_yerself();
my $elen = length($eyedrops_pm);
$elen > 50000 or print "not ";
++$itest; print "ok $itest - slurp_yerself length is $elen\n";
my $nlines = $eyedrops_pm =~ tr/\n//;
$nlines > 1000 or print "not ";
++$itest; print "ok $itest - slurp_yerself line count is $nlines\n";
# XXX: could add MD5 checksum test here.
# XXX: beware above test is fragile when testing auto-generated EyeDrops.pm
# (as is done by 19_surrounds.t)
# -----------------------------------------------------------------------
# get_eye_dir() tests.
my $eyedir = get_eye_dir();
$eyedir or print "not ";
++$itest; print "ok $itest - get_eye_dir sane\n";
-d $eyedir or print "not ";
++$itest; print "ok $itest - get_eye_dir dir\n";
-f "$eyedir/camel.eye" or print "not ";
++$itest; print "ok $itest - get_eye_dir camel.eye\n";
# v1.50 added eye property (.eyp) files.
-f "$eyedir/camel.eyp" or print "not ";
++$itest; print "ok $itest - get_eye_dir camel.eyp\n";
# -----------------------------------------------------------------------
# Sanity check on all properties files.
{
# Check that .eye files and .eyp files match.
my @eyp_shapes = _get_eyp_shapes($eyedir);
# print STDERR "# There are: " . scalar(@eyp_shapes) . " property files\n";
scalar(@eye_shapes) == scalar(@eyp_shapes) or print "not ";
++$itest; print "ok $itest - num .eyp matches num .eye\n";
for my $i (0 .. $#eye_shapes) {
$eye_shapes[$i] eq $eyp_shapes[$i] or print "not ";
++$itest; print "ok $itest - '$eye_shapes[$i]' .eye matches .eyp\n";
}
}
for my $e (@eye_shapes) {
test_one_propchars($e,
Acme::EyeDrops::_slurp_tfile($eyedir . '/' . $e . '.eyp'));
}
{
# XXX: need to update test when update shape properties.
my $h = get_prop_names();
# for my $k (sort keys %{$h}) { print "k='$k' v='@{$h->{$k}}'\n" }
ref($h) eq 'HASH' or print "not ";
++$itest; print "ok $itest - valid props, hash ref\n";
my @skey = sort keys %{$h};
my $nskey = @skey;
print STDERR "# properties: @skey\n";
$nskey == 6 or print "not ";
++$itest; print "ok $itest - valid props, number should be $nskey\n";
for my $k ('author',
'authorcpanid',
'description',
'keywords',
'nick',
'source') {
shift(@skey) eq $k or print "not ";
++$itest; print "ok $itest - valid props, '$k'\n";
}
}
# -----------------------------------------------------------------------
# _get_properties() tests.
( run in 1.114 second using v1.01-cache-2.11-cpan-b16cb0d3907 )