4 use Test::More tests => 15;
7 use Class::MOP::Instance;
9 my $C = 'Class::MOP::Instance';
12 my $instance = '$self';
13 my $slot_name = '"foo"';
16 is($C->inline_get_slot_value($instance, $slot_name),
18 '... got the right code for get_slot_value');
20 is($C->inline_set_slot_value($instance, $slot_name, $value),
21 '$self->{"foo"} = $value',
22 '... got the right code for set_slot_value');
24 is($C->inline_initialize_slot($instance, $slot_name),
26 '... got the right code for initialize_slot');
28 is($C->inline_is_slot_initialized($instance, $slot_name),
29 'exists $self->{"foo"}',
30 '... got the right code for get_slot_value');
32 is($C->inline_weaken_slot_value($instance, $slot_name),
33 'Scalar::Util::weaken( $self->{"foo"} )',
34 '... got the right code for weaken_slot_value');
36 is($C->inline_strengthen_slot_value($instance, $slot_name),
37 '$self->{"foo"} = $self->{"foo"}',
38 '... got the right code for strengthen_slot_value');
42 my $instance = '$_[0]';
43 my $slot_name = '$attr_name';
46 is($C->inline_get_slot_value($instance, $slot_name),
47 '$_[0]->{$attr_name}',
48 '... got the right code for get_slot_value');
50 is($C->inline_set_slot_value($instance, $slot_name, $value),
51 '$_[0]->{$attr_name} = []',
52 '... got the right code for set_slot_value');
54 is($C->inline_initialize_slot($instance, $slot_name),
56 '... got the right code for initialize_slot');
58 is($C->inline_is_slot_initialized($instance, $slot_name),
59 'exists $_[0]->{$attr_name}',
60 '... got the right code for get_slot_value');
62 is($C->inline_weaken_slot_value($instance, $slot_name),
63 'Scalar::Util::weaken( $_[0]->{$attr_name} )',
64 '... got the right code for weaken_slot_value');
66 is($C->inline_strengthen_slot_value($instance, $slot_name),
67 '$_[0]->{$attr_name} = $_[0]->{$attr_name}',
68 '... got the right code for strengthen_slot_value');
71 my $accessor_string = "sub {\n"
72 . $C->inline_set_slot_value('$_[0]', '$attr_name', '$_[1]')
73 . " if scalar \@_ == 2;\n"
74 . $C->inline_get_slot_value('$_[0]', '$attr_name')
79 $_[0]->{$attr_name} = $_[1] if scalar @_ == 2;
82 '... got the right code string for accessor');
84 my $reader_string = "sub {\n"
85 . $C->inline_get_slot_value('$_[0]', '$attr_name')
92 '... got the right code string for reader');
94 my $writer_string = "sub {\n"
95 . $C->inline_set_slot_value('$_[0]', '$attr_name', '$_[1]')
100 $_[0]->{$attr_name} = $_[1];
102 '... got the right code string for writer');