Const-Fast
view release on metacpan or search on metacpan
t/10-basics.t view on Meta::CPAN
# Test the Const function
use strict;
use warnings FATAL => 'all';
use Test::More 0.88;
use Test::Fatal qw(exception lives_ok);
use Const::Fast;
sub throws_readonly(&@) {
my ($sub, $desc) = @_;
my ($file, $line) = (caller)[1,2];
my $error = qr/\AModification of a read-only value attempted at \Q$file\E line $line\.\Z/;
local $Test::Builder::Level = $Test::Builder::Level + 1;
like(exception { $sub->() }, $error, $desc);
}
sub throws_reassign(&@) {
my ($sub, $desc) = @_;
my ($file, $line) = (caller)[1,2];
my $error = qr/\AAttempt to reassign a readonly \w+ at \Q$file\E line $line\.?\Z/;
local $Test::Builder::Level = $Test::Builder::Level + 1;
like(exception { $sub->() }, $error, $desc);
}
sub throws_ok(&@) {
my ($sub, $error, $desc) = @_;
local $Test::Builder::Level = $Test::Builder::Level + 1;
like(exception { $sub->() }, $error, $desc);
}
lives_ok { const my $scalar => 45 } 'Create scalar';
throws_readonly { const my $scalar => 45; $scalar = 45 } 'Modify scalar';
throws_readonly { const my $ref => \do{45}; $$ref = 45 } 'Modify ref to scalar';
( run in 1.382 second using v1.01-cache-2.11-cpan-49f99fa48dc )