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

input
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";
  1. $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";
  2. $value ← 4

    4sub add_two {5    my ($value→ 4) = @_;6    return $value4 + 2;7}
  3. $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
  1. $input ← 1, $expected ← 6

    9my $input→ 1 = 1;10my $expected→ 6 = 6;11my $actual = add_two($input1);12my $status = $actual == $expected ? "pass" : "fail";
  2. $value ← 1

    4sub add_two {5    my ($value→ 1) = @_;6    return $value1 + 2;7}
  3. $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
  1. $input ← 5, $expected ← 6

    9my $input→ 5 = 5;10my $expected→ 6 = 6;11my $actual = add_two($input5);12my $status = $actual == $expected ? "pass" : "fail";
  2. $value ← 5

    4sub add_two {5    my ($value→ 5) = @_;6    return $value5 + 2;7}
  3. $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