This is a minimal implementation of Cucumber in Perl5
To learn about Cucumber take a look at:
http://wiki.gihub.com/aslakhellesoy/cucumber
Feature: Dealing with mushrooms
In order to test the effect of evil poisonous mushrooms
As an evil scientist
I want to test effects of eating mushrooms on little children
Scenario: Mushrooms are bad for you, they kill boys
Given a live boy in a forest
When he ate a mushroom
Then he was a dead boy in a forest
Scenario: Mushrooms are bad for girls too
Given a live girl in a forest
When she ate a mushroom
Then she was a dead girl in a forest
Given qr/(.*) in (.*)/, sub {
my ($description,$location) = @_;
$state{human} = $description;
$state{location} = $location;
};
When qr/s?he ate (.*)/, sub {
my $item = shift;
if ($item eq 'a mushroom') {
$state{human} =~ s/live/dead/;
}
};
Then qr/s?he was (.*) in (.*)/, sub {
my ($description,$location) = @_;
is($state{human},$description,$description);
is($state{location},$location,$location);
};
$ perl p5-cucumber.pl
Feature: Dealing with mushrooms
In order to test the effect of evil poisonous mushrooms
As an evil scientist
I want to test effects of eating mushrooms on little children
Scenario: Mushrooms are bad for you, they kill boys
Given a live boy in a forest
When he ate a mushroom
Then he was a dead boy in a forest
ok 1 - a dead boy
ok 2 - a forest
Scenario: Mushrooms are bad for girls too
Given a live girl in a forest
When she ate a mushroom
Then she was a dead girl in the sea
ok 3 - a dead girl
not ok 4 - the sea
# Failed test 'the sea'
# at ./p5-cucumber.pl line 82.
# got: 'a forest'
# expected: 'the sea'
1..4
# Looks like you failed 1 test of 4.
(exitcode is 1 for failure)
And when we fix the story:
$ perl p5-cucumber.pl
Feature: Dealing with mushrooms
In order to test the effect of evil poisonous mushrooms
As an evil scientist
I want to test effects of eating mushrooms on little children
Scenario: Mushrooms are bad for you, they kill boys
Given a live boy in a forest
When he ate a mushroom
Then he was a dead boy in a forest
ok 1 - a dead boy
ok 2 - a forest
Scenario: Mushrooms are bad for girls too
Given a live girl in a forest
When she ate a mushroom
Then she was a dead girl in a forest
ok 3 - a dead girl
ok 4 - a forest
1..4
(exitcode is 0 for success)
Great thank you for the perl-il and perl-qa mailing lists
for helping me with some high level perl concepts that make
this code so beautiful like it is.
Another huge thank you to the people in #perl @freenode.net
who helped me with sticky dereferencing and scalar/list
problems.