Testing Basics
Expected and Actual
Separating expected and actual values makes failures easier to read.
expected value
The expected value is what the test says should happen.
Expected and Actual
expected_actual.pl
Replay: real traced execution (multi-file project)
use strict;
use warnings;
sub add_two {
my ($value) = @_;
return $value + 2;
}
my $input = 4;
my $expected = 6;
my $actual = add_two($input);
my $status = $actual == $expected ? "pass" : "fail";
print "input=$input\n";
print "expected=$expected\n";
print "actual=$actual\n";
print "status=$status\n";
use strict;
use warnings;
sub add_two {
my ($value) = @_;
return $value + 2;
}
my $input = 1;
my $expected = 6;
my $actual = add_two($input);
my $status = $actual == $expected ? "pass" : "fail";
print "input=$input\n";
print "expected=$expected\n";
print "actual=$actual\n";
print "status=$status\n";
use strict;
use warnings;
sub add_two {
my ($value) = @_;
return $value + 2;
}
my $input = 5;
my $expected = 6;
my $actual = add_two($input);
my $status = $actual == $expected ? "pass" : "fail";
print "input=$input\n";
print "expected=$expected\n";
print "actual=$actual\n";
print "status=$status\n";
$input ← 4, $expected ← 6
9my $input→ 4 = 4; #@input=1, 510my $expected→ 6 = 6;11my $actual = add_two($input4);12my $status = $actual == $expected ? "pass" : "fail";$value ← 4
4sub add_two {5 my ($value→ 4) = @_;6 return $value4 + 2;7}$actual ← 6, $status ← pass
10my $expected = 6;11my $actual→ 6 = add_two($input4);12my $status→ pass = $actual6 == $expected6 ? "pass" : "fail";1314print "input=$input4\n";15print "expected=$expected6\n";16print "actual=$actual6\n";17print "status=$statuspass\n";outputinput=4 expected=6 actual=6 status=pass
$input ← 1, $expected ← 6
9my $input→ 1 = 1;10my $expected→ 6 = 6;11my $actual = add_two($input1);12my $status = $actual == $expected ? "pass" : "fail";$value ← 1
4sub add_two {5 my ($value→ 1) = @_;6 return $value1 + 2;7}$actual ← 3, $status ← fail
10my $expected = 6;11my $actual→ 3 = add_two($input1);12my $status→ fail = $actual3 == $expected6 ? "pass" : "fail";1314print "input=$input1\n";15print "expected=$expected6\n";16print "actual=$actual3\n";17print "status=$statusfail\n";outputinput=1 expected=6 actual=3 status=fail
$input ← 5, $expected ← 6
9my $input→ 5 = 5;10my $expected→ 6 = 6;11my $actual = add_two($input5);12my $status = $actual == $expected ? "pass" : "fail";$value ← 5
4sub add_two {5 my ($value→ 5) = @_;6 return $value5 + 2;7}$actual ← 7, $status ← fail
10my $expected = 6;11my $actual→ 7 = add_two($input5);12my $status→ fail = $actual7 == $expected6 ? "pass" : "fail";1314print "input=$input5\n";15print "expected=$expected6\n";16print "actual=$actual7\n";17print "status=$statusfail\n";outputinput=5 expected=6 actual=7 status=fail