#!/usr/bin/perl -s

use strict;
use warnings;
use Test::More tests => 26;


BEGIN {
    if (-d 't') {
        chdir 't' or die "Failed to chdir: $!\n";
    }

    unshift @INC => ".";

    unless (grep {m!"blib/lib"!} @INC) {
        push @INC => grep {-d} "blib/lib", "../blib/lib"
    }

    use_ok ('LA_Base');
    use_ok ('Lowest');
}

ok (defined $Lexical::Attributes::VERSION &&
            $Lexical::Attributes::VERSION > 0, '$VERSION');

#
# Check whether methods were created (or not).
#
ok ( defined &Super::name,      "Super::name");
ok ( defined &Super::colour,    "Super::colour");
ok (!defined &LA_Base::name,    "LA_Base::name");
ok (!defined &LA_Base::colour,  "LA_Base::colour");
ok ( defined &LA_Base::age,     "LA_Base::age");
ok ( defined &LA_Base::key1,    "LA_Base::key1");
ok ( defined &LA_Base::key2,    "LA_Base::key2");
ok ( defined &Lowest::key1,     "Lowest::key1");
ok ( defined &Lowest::key2,     "Lowest::key2");

my $obj = LA_Base -> new;
my $low = Lowest -> new;
isa_ok ($obj, "LA_Base");
isa_ok ($low, "Lowest");

$obj -> set_name ("fnord");
$obj -> set_colour ("yellow");
$obj -> set_address ("Europe");
$obj -> set_base_name ("womble");
$obj -> set_base_colour ("purple");
$obj -> set_age (25);

is ($obj ->  name,        "fnord",  "->  name");
is ($obj -> {name},       "fnord",  "-> {name}");
is ($obj ->  colour,      "yellow", "->  colour");
is ($obj -> {colour},     "yellow", "-> {colour}");
is ($obj ->  base_name,   "womble", "-> base_name");
is ($obj ->  base_colour, "purple", "-> base_colour");
is ($obj ->  age,          25,      "-> age");
is ($obj ->  address,     "eporuE", "->  address");
is ($obj -> {address},    "Europe", "-> {address}");

$low -> set_key1 ("hello");
$low -> set_key2 ("world");
is ($low -> key1, "hello", "-> key1");
is ($low -> key2, "dlrow", "-> key2");

$low -> my_set_key2 ("earth");
is ($low -> key2, "htrae", "-> key2");


__END__