The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

use strict;
use Test::More tests => 15;
use Acme::Colour;

BEGIN { use_ok('Acme::Orange'); }

# Hi Leon. I think you may recognise quite a few of your tests here. :-)

my $o = Acme::Orange->new();
is(ref($o), 'Acme::Orange', "should get Acme::Orange object");
is($o->colour, "orange", "should get orange object");

$o = Acme::Orange->new("black");
is(ref($o), 'Acme::Orange', "should get Acme::Orange object");
is("$o", "orange", "should get orange");

$o->add("red");
is($o->colour, "orange", "Orange *is* the only fruit");

my $c = Acme::Colour->new("black");
ok($c, "should get colour");
is("$c", "black", "should get black");
$c->add($o);
is($c->colour, "orange", "Should be able to add Acme::Orange objects to Acme::Colour objects");

$c = Acme::Colour->new("green");
ok($c, "should get colour");
is("$c", "green", "should get green");
$c->add($o);
# I'm not confident that this will work reliably everywhere
is($c->colour, "yellow", "green + orange is yellow");

$c = Acme::Colour->new("green");
ok($c, "should get colour");
is("$c", "green", "should get green");
$o->add($c);
is($o->colour, "orange", "orange + green is orange");