#!/usr/bin/perl
use warnings;
use strict;
# 4/5
sub CheckDesc {
my($desc, $type, $datum) = @_;
CheckRef($desc, $type);
CheckType($desc, $type);
CheckVal($desc, $type, $datum);
CheckDispose($desc);
}
# 1
sub CheckVal {
my($desc, $type, $datum) = @_;
my @val = $desc->get;
my $val = $val[0];
if (@val > 1) {
my $ok = 1;
for (0 .. $#val) {
$ok = 0 unless $datum->[$_] eq $val[$_];
}
ok($ok, "Check value: '@val' == '@$datum'");
} elsif ($type eq typeShortFloat || $type eq typeFloat) {
my $num = abs($val - $datum);
ok($num < .01, "Check value: $val ~ $datum");
} elsif ($type eq typeFSS) {
is(MakePath($val), $datum, "Check value: $datum");
} else {
is($val, $datum, "Check value: $val == $datum");
}
}
# 1/2
sub CheckRef {
my($desc, $type) = @_;
my $ref = ref $desc;
if ($ref eq 'AEKeyDesc') {
# ok, so this is kinda lame, oh well ... we know if we are here,
# though, we are expecting the second test, so our numbers will
# be off if we don't get here
is($ref, 'AEKeyDesc', 'Create AEKeyDesc');
is($desc->key, $type, "Check key: $type");
} else {
is($ref, 'AEDesc', 'Create AEDesc');
}
}
# 1
sub CheckType {
my($desc, $type) = @_;
is($desc->type, $type, "Check type: $type");
}
sub CheckRefType {
my($desc, $type) = @_;
CheckRef($desc, $type);
CheckType($desc, $type);
}
# 1
sub CheckDispose {
my($desc) = @_;
my $ref = ref $desc;
ok($desc->dispose, 'Dispose');
}
1;
__END__