Open
Description
I have a feeling that this may have been debated but testing boolean values in Perl may need improvement
Example: HumanEval_92_any_int
sub any_int {
my($x, $y, $z) = @_;
# some perl program that returns 0/1
}
use Test::Deep;
sub testhumaneval {
my $candidate = \&any_int;
if(eq_deeply($candidate->(2, 3, 1),1)) {
print "ok!" }else{
exit 1;
}
if(eq_deeply($candidate->(2.5, 2, 3),"")) {
print "ok!" }else{
exit 1;
}
if(eq_deeply($candidate->(1.5, 5, 3.5),"")) {
print "ok!" }else{
exit 1;
}
if(eq_deeply($candidate->(2, 6, 2),"")) {
print "ok!" }else{
exit 1;
}
if(eq_deeply($candidate->(4, 2, 2),1)) {
print "ok!" }else{
exit 1;
}
if(eq_deeply($candidate->(2.2, 2.2, 2.2),"")) {
print "ok!" }else{
exit 1;
}
if(eq_deeply($candidate->(-4, 6, 2),1)) {
print "ok!" }else{
exit 1;
}
if(eq_deeply($candidate->(2, 1, 1),1)) {
print "ok!" }else{
exit 1;
}
if(eq_deeply($candidate->(3, 4, 7),1)) {
print "ok!" }else{
exit 1;
}
if(eq_deeply($candidate->(3.0, 4, 7),"")) {
print "ok!" }else{
exit 1;
}
}
testhumaneval();
It seems like at the moment, when the program is expected to output False
, it is being compared against ""
with eq_deeply
. Many generations in perl, though, return 0/1. But the following comparison between 0
and ""
seem to evaluate to False
eq_deeply(0, "") # -> False
Maybe, one solution is to directly use the output of these functions as the condition for the if
statement for that unit test (only when output is expected to be boolean)
if($candidate->(2, 3, 1)) { #expect True
print "ok!" }else{
exit 1;
}
if(!$candidate->(2.5, 2, 3)) { #expect False
print "ok!" }else{
exit 1;
}
Metadata
Metadata
Assignees
Labels
No labels