1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
use strict;
use warnings;
use Test::More;
use Test::Exception;
use Class::MOP;
{
my $attr = Class::MOP::Attribute->new('$test');
is( $attr->meta, Class::MOP::Attribute->meta,
'... instance and class both lead to the same meta' );
}
{
my $meta = Class::MOP::Attribute->meta();
isa_ok( $meta, 'Class::MOP::Class' );
my @methods = qw(
new
clone
initialize_instance_slot
_set_initial_slot_value
name
has_accessor accessor
has_writer writer
has_write_method get_write_method get_write_method_ref
has_reader reader
has_read_method get_read_method get_read_method_ref
has_predicate predicate
has_clearer clearer
has_builder builder
has_init_arg init_arg
has_default default is_default_a_coderef
has_initializer initializer
has_insertion_order insertion_order _set_insertion_order
definition_context
slots
get_value
set_value
get_raw_value
set_raw_value
set_initial_value
has_value
clear_value
associated_class
attach_to_class
detach_from_class
accessor_metaclass
associated_methods
associate_method
process_accessors
_process_accessors
install_accessors
remove_accessors
_new
);
is_deeply(
[
sort Class::MOP::Mixin::AttributeCore->meta->get_method_list,
$meta->get_method_list
],
[ sort @methods ],
'... our method list matches'
);
foreach my $method_name (@methods) {
ok( $meta->find_method_by_name($method_name),
'... Class::MOP::Attribute->find_method_by_name(' . $method_name . ')' );
}
my @attributes = (
'name',
'accessor',
'reader',
'writer',
'predicate',
'clearer',
'builder',
'init_arg',
'initializer',
'definition_context',
'default',
'associated_class',
'associated_methods',
'insertion_order',
);
is_deeply(
[
sort Class::MOP::Mixin::AttributeCore->meta->get_attribute_list,
$meta->get_attribute_list
],
[ sort @attributes ],
'... our attribute list matches'
);
foreach my $attribute_name (@attributes) {
ok( $meta->find_attribute_by_name($attribute_name),
'... Class::MOP::Attribute->find_attribute_by_name('
. $attribute_name
. ')' );
}
# We could add some tests here to make sure that
# the attribute have the appropriate
# accessor/reader/writer/predicate combinations,
# but that is getting a little excessive so I
# wont worry about it for now. Maybe if I get
# bored I will do it.
}
done_testing;
|