Class::MOP - refactoring the binary tree test code
[gitmo/Class-MOP.git] / t / 020_attribute.t
CommitLineData
2eb717d5 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use Test::More no_plan => 1;
7use Test::Exception;
8
9BEGIN {
10 use_ok('Class::MOP::Attribute');
11}
12
13{
14 my $attr = Class::MOP::Attribute->new('$foo');
15 isa_ok($attr, 'Class::MOP::Attribute');
16
17 is($attr->name, '$foo', '... $attr->name == $foo');
18
19 ok(!$attr->has_accessor, '... $attr does not have an accessor');
20 ok(!$attr->has_reader, '... $attr does not have an reader');
21 ok(!$attr->has_writer, '... $attr does not have an writer');
22 ok(!$attr->has_init_arg, '... $attr does not have an init_arg');
23 ok(!$attr->has_default, '... $attr does not have an default');
24}
25
26{
27 my $attr = Class::MOP::Attribute->new('$foo', (
28 init_arg => '-foo',
29 default => 'BAR'
30 ));
31 isa_ok($attr, 'Class::MOP::Attribute');
32
33 is($attr->name, '$foo', '... $attr->name == $foo');
34
35 ok($attr->has_init_arg, '... $attr does have an init_arg');
36 is($attr->init_arg, '-foo', '... $attr->init_arg == -foo');
37 ok($attr->has_default, '... $attr does have an default');
38 is($attr->default, 'BAR', '... $attr->default == BAR');
39
40 ok(!$attr->has_accessor, '... $attr does not have an accessor');
41 ok(!$attr->has_reader, '... $attr does not have an reader');
42 ok(!$attr->has_writer, '... $attr does not have an writer');
43}
44
45{
46 my $attr = Class::MOP::Attribute->new('$foo', (
47 accessor => 'foo',
48 init_arg => '-foo',
49 default => 'BAR'
50 ));
51 isa_ok($attr, 'Class::MOP::Attribute');
52
53 is($attr->name, '$foo', '... $attr->name == $foo');
54
55 ok($attr->has_init_arg, '... $attr does have an init_arg');
56 is($attr->init_arg, '-foo', '... $attr->init_arg == -foo');
57 ok($attr->has_default, '... $attr does have an default');
58 is($attr->default, 'BAR', '... $attr->default == BAR');
59
60 ok($attr->has_accessor, '... $attr does have an accessor');
61 is($attr->accessor, 'foo', '... $attr->accessor == foo');
62
63 ok(!$attr->has_reader, '... $attr does not have an reader');
64 ok(!$attr->has_writer, '... $attr does not have an writer');
65}
66
67{
68 my $attr = Class::MOP::Attribute->new('$foo', (
69 reader => 'get_foo',
70 writer => 'set_foo',
71 init_arg => '-foo',
72 default => 'BAR'
73 ));
74 isa_ok($attr, 'Class::MOP::Attribute');
75
76 is($attr->name, '$foo', '... $attr->name == $foo');
77
78 ok($attr->has_init_arg, '... $attr does have an init_arg');
79 is($attr->init_arg, '-foo', '... $attr->init_arg == -foo');
80 ok($attr->has_default, '... $attr does have an default');
81 is($attr->default, 'BAR', '... $attr->default == BAR');
82
83 ok($attr->has_reader, '... $attr does have an reader');
84 is($attr->reader, 'get_foo', '... $attr->reader == get_foo');
85 ok($attr->has_writer, '... $attr does have an writer');
86 is($attr->writer, 'set_foo', '... $attr->writer == set_foo');
87
88 ok(!$attr->has_accessor, '... $attr does not have an accessor');
89}
90
91dies_ok {
cbd9f942 92 Class::MOP::Attribute->new('$foo', (
2eb717d5 93 accessor => 'foo',
94 reader => 'get_foo',
95 ));
96} '... cannot create accessors with reader/writers';
97
98dies_ok {
cbd9f942 99 Class::MOP::Attribute->new('$foo', (
2eb717d5 100 accessor => 'foo',
101 writer => 'set_foo',
102 ));
103} '... cannot create accessors with reader/writers';
104
105dies_ok {
cbd9f942 106 Class::MOP::Attribute->new('$foo', (
2eb717d5 107 accessor => 'foo',
108 reader => 'get_foo',
109 writer => 'set_foo',
110 ));
111} '... cannot create accessors with reader/writers';
112
cbd9f942 113dies_ok {
114 Class::MOP::Attribute->new();
115} '... no name argument';
116
117dies_ok {
118 Class::MOP::Attribute->new('');
119} '... bad name argument';
120
121dies_ok {
122 Class::MOP::Attribute->new(0);
123} '... bad name argument';
124
125dies_ok {
126 Class::MOP::Attribute->install_accessors();
127} '... bad install_accessors argument';
128
129dies_ok {
130 Class::MOP::Attribute->install_accessors(bless {} => 'Fail');
131} '... bad install_accessors argument';
132
133dies_ok {
134 Class::MOP::Attribute->remove_accessors();
135} '... bad remove_accessors argument';
136
137dies_ok {
138 Class::MOP::Attribute->remove_accessors(bless {} => 'Fail');
139} '... bad remove_accessors argument';
140
2eb717d5 141
142{
143 my $meta = Class::MOP::Attribute->meta();
144 isa_ok($meta, 'Class::MOP::Class');
145
146 foreach my $method_name (qw(
147 meta
148 new
149 has_accessor accessor
150 has_writer writer
151 has_reader reader
152 has_init_arg init_arg
153 has_default default
154 install_accessors
155 remove_accessors
156 )) {
157 ok($meta->has_method($method_name), '... Class::MOP::Attribute->has_method(' . $method_name . ')');
158 }
159
160
161}