#!/usr/bin/perl
use strict;
use warnings;
# use lib "./t/lib";
use Test::More tests => 6;
package MyClass;
use Moose;
extends ('Test::Run::Base::Struct');
has 'field1' => (is => "rw", isa => "Str");
has 'field2' => (is => "rw", isa => "Str");
package main;
{
my $class =
MyClass->new(
{
field1 => "Value 1",
field2 => "val2",
}
);
# TEST
ok ($class, "Object was instantiated");
# TEST
is ($class->field1(), "Value 1", "field1()'s value is OK.");
# TEST
is ($class->field2(), "val2", "field2()'s value is OK.");
}
{
my $self;
eval {
$self = MyClass->new(
{
'field1' => "MyValue 1",
'non_existent' => "iSuck",
}
);
};
my $err = $@;
# TEST
like(
$err,
qr{\AFound unknown attribute},
"Initialize a struct with an unknown field.",
);
}
package MyNumClass;
use Moose;
extends ('Test::Run::Base::Struct');
has 'age' => (is => "rw", isa => "Num");
has 'name' => (is => "rw", isa => "Str");
package main;
{
my $jack = MyNumClass->new(
{
name => "Jack",
age => 10,
}
);
$jack->add_to_field('age', 3);
# TEST
is ($jack->age(), 13, "Age was incremented");
eval {
$jack->add_to_field('non-exist', 3);
};
my $err = $@;
# TEST
like(
$err,
qr{\ACan't locate object method},
"Failed to increment non-existent field.",
);
}