Fix [perl #66970] Incorrect coderef in MODIFY_CODE_ATTRIBUTES
[p5sagit/p5-mst-13.2.git] / ext / List-Util / t / readonly.t
CommitLineData
1bfb5477 1#!./perl
2
f4a2945e 3BEGIN {
1bfb5477 4 unless (-d 'blib') {
f4a2945e 5 chdir 't' if -d 't';
6 @INC = '../lib';
6b05f64e 7 require Config; import Config;
1bfb5477 8 keys %Config; # Silence warning
6b05f64e 9 if ($Config{extensions} !~ /\bList\/Util\b/) {
10 print "1..0 # Skip: List::Util was not built\n";
11 exit 0;
12 }
1bfb5477 13 }
f4a2945e 14}
15
16use Scalar::Util qw(readonly);
19d9c0e4 17use Test::More tests => 11;
f4a2945e 18
cf083cf9 19ok( readonly(1), 'number constant');
f4a2945e 20
21my $var = 2;
22
cf083cf9 23ok( !readonly($var), 'number variable');
24is( $var, 2, 'no change to number variable');
f4a2945e 25
cf083cf9 26ok( readonly("fred"), 'string constant');
f4a2945e 27
28$var = "fred";
29
cf083cf9 30ok( !readonly($var), 'string variable');
31is( $var, 'fred', 'no change to string variable');
f4a2945e 32
33$var = \2;
34
cf083cf9 35ok( !readonly($var), 'reference to constant');
36ok( readonly($$var), 'de-reference to constant');
f4a2945e 37
cf083cf9 38ok( !readonly(*STDOUT), 'glob');
19d9c0e4 39
40sub try
41{
42 my $v = \$_[0];
43 return readonly $$v;
44}
45
46$var = 123;
db8130dd 47{
48 local $TODO = $Config::Config{useithreads} ? "doesn't work with threads" : undef;
49 ok( try ("abc"), 'reference a constant in a sub');
50}
19d9c0e4 51ok( !try ($var), 'reference a non-constant in a sub');