summaryrefslogtreecommitdiff
path: root/t/pragma
diff options
context:
space:
mode:
authorGurusamy Sarathy <gsar@cpan.org>1999-12-28 02:59:16 +0000
committerGurusamy Sarathy <gsar@cpan.org>1999-12-28 02:59:16 +0000
commit837638265c936ed27578a2aa7829a47e866303b0 (patch)
tree2a36564d30f0839d5123722693fd890e4ef81a6a /t/pragma
parentd702ae4256b191c7ab78dd4e746c2175206f38ce (diff)
downloadperl-837638265c936ed27578a2aa7829a47e866303b0.tar.gz
newer version of constant.pm from Tom Phoenix; added Tom's notes to
perldelta; added STOP, DESTROY and AUTOLOAD to specials list p4raw-id: //depot/perl@4718
Diffstat (limited to 't/pragma')
-rwxr-xr-xt/pragma/constant.t43
1 files changed, 41 insertions, 2 deletions
diff --git a/t/pragma/constant.t b/t/pragma/constant.t
index a56e081083..5904a4f2b6 100755
--- a/t/pragma/constant.t
+++ b/t/pragma/constant.t
@@ -14,9 +14,9 @@ END { print @warnings }
######################### We start with some black magic to print on failure.
-BEGIN { $| = 1; print "1..46\n"; }
+BEGIN { $| = 1; print "1..58\n"; }
END {print "not ok 1\n" unless $loaded;}
-use constant;
+use constant 1.01;
$loaded = 1;
#print "# Version: $constant::VERSION\n";
print "ok 1\n";
@@ -155,3 +155,42 @@ test 44, scalar($@ =~ /^No such pseudo-hash field/);
print CCODE->(45);
eval q{ CCODE->{foo} };
test 46, scalar($@ =~ /^Constant is not a HASH/);
+
+# Allow leading underscore
+use constant _PRIVATE => 47;
+test 47, _PRIVATE == 47;
+
+# Disallow doubled leading underscore
+eval q{
+ use constant __DISALLOWED => "Oops";
+};
+test 48, $@ =~ /begins with '__'/;
+
+# Check on declared() and %declared. This sub should be EXACTLY the
+# same as the one quoted in the docs!
+sub declared ($) {
+ use constant 1.01; # don't omit this!
+ my $name = shift;
+ $name =~ s/^::/main::/;
+ my $pkg = caller;
+ my $full_name = $name =~ /::/ ? $name : "${pkg}::$name";
+ $constant::declared{$full_name};
+}
+
+test 49, declared 'PI';
+test 50, $constant::declared{'main::PI'};
+
+test 51, !declared 'PIE';
+test 52, !$constant::declared{'main::PIE'};
+
+{
+ package Other;
+ use constant IN_OTHER_PACK => 42;
+ ::test 53, ::declared 'IN_OTHER_PACK';
+ ::test 54, $constant::declared{'Other::IN_OTHER_PACK'};
+ ::test 55, ::declared 'main::PI';
+ ::test 56, $constant::declared{'main::PI'};
+}
+
+test 57, declared 'Other::IN_OTHER_PACK';
+test 58, $constant::declared{'Other::IN_OTHER_PACK'};