#!perl -T # # $Id: 02-avhv.t,v 0.1 2008/06/27 19:11:42 dankogai Exp $ # use strict; use warnings; use Attribute::Constant; #use Test::More 'no_plan'; use Test::More tests => 18; { my @a : Constant( 0, 1, 2, 3 ); is_deeply [ 0, 1, 2, 3 ], \@a, '@a => (0,1,2,3)'; eval { shift @a }; ok $@, $@; eval { $a[0]-- }; ok $@, $@; my $a : Constant([ 0, 1, 2, 3 ]); is_deeply [ 0, 1, 2, 3 ], $a, '$a => [0,1,2,3]'; eval { shift @$a }; ok $@, $@; eval { $a->[0]-- }; ok $@, $@; my $aa : Constant([ 0, [ 1, [ 2, [3] ] ] ]); is_deeply [ 0, [ 1, [ 2, [3] ] ] ], $aa, '$aa => [0,[1,[2,[3]]]]'; eval { shift @$aa }; ok $@, $@; eval { $aa->[1][1][1][0]-- }; ok $@, $@; } { my %h : Constant( one => 1, two => 2 ); is_deeply { one => 1, two => 2 }, \%h, '%h => (one=>1, two=>2)'; eval { %h = ( three => 3 ) }; ok $@, $@; eval { $h{one}-- }; ok $@, $@; my $h : Constant({ one => 1, two => 2 }); is_deeply { one => 1, two => 2 }, $h, '$h => {one=>1, two=>2}'; eval { $h = { three => 3 } }; ok $@, $@; eval { $h->{one}-- }; ok $@, $@; my $hh : Constant({ one => 1, two => { be => 2 } }); is_deeply { one => 1, two => { be => 2 } }, $hh, '$hh => {one=>1, two=>{three=>3}}'; eval { $h = { three => 3 } }; ok $@, $@; eval { $h->{one}++}; ok $@, $@; } __END__ #SCALAR ARRAY HASH #CODE #REF #GLOB #LVALUE #FORMAT #IO #VSTRING #Regexp