Change 32724 by [EMAIL PROTECTED] on 2007/12/26 11:22:38

        A test for upgrading scalars. Curiously, before this, lib/Math/Trig.t
        was the only code anywhere in the build or testsuite that upgraded an
        NV to an RV.

Affected files ...

... //depot/perl/MANIFEST#1654 edit
... //depot/perl/t/op/upgrade.t#1 add

Differences ...

==== //depot/perl/MANIFEST#1654 (text) ====
Index: perl/MANIFEST
--- perl/MANIFEST#1653~32709~   2007-12-22 11:35:52.000000000 -0800
+++ perl/MANIFEST       2007-12-26 03:22:38.000000000 -0800
@@ -3932,6 +3932,7 @@
 t/op/undef.t                   See if undef works
 t/op/universal.t               See if UNIVERSAL class works
 t/op/unshift.t                 See if unshift works
+t/op/upgrade.t                 See if upgrading and assigning scalars works
 t/op/utf8decode.t              See if UTF-8 decoding works
 t/op/utfhash.t                 See if utf8 keys in hashes behave
 t/op/utftaint.t                        See if utf8 and taint work together

==== //depot/perl/t/op/upgrade.t#1 (text) ====
Index: perl/t/op/upgrade.t
--- /dev/null   2007-12-25 10:24:49.534715096 -0800
+++ perl/t/op/upgrade.t 2007-12-26 03:22:38.000000000 -0800
@@ -0,0 +1,48 @@
+#!./perl -w
+
+# Check that we can "upgrade" from anything to anything else.
+# Curiously, before this, lib/Math/Trig.t was the only code anywhere in the
+# build or testsuite that upgraded an NV to an RV
+
+BEGIN {
+    chdir 't';
+    @INC = '../lib';
+    require './test.pl';
+}
+
+use strict;
+
+my $null;
+
+$! = 1;
+my %types = (
+    null => $null,
+    iv => 3,
+    nv => .5,
+    rv => [],
+    pv => "Perl rules",
+    pviv => 3,
+    pvnv => 1==1,
+    pvmg => $^,
+);
+
+# This is somewhat cheating but I can't think of anything built in that I can
+# copy that already has type PVIV
+$types{pviv} = "Perl rules!";
+
+# use Devel::Peek; Dump $pvmg;
+
+my @keys = keys %types;
+plan tests => @keys * @keys;
+
+foreach my $source_type (@keys) {
+    foreach my $dest_type (@keys) {
+       # Pads re-using variables might contaminate this
+       my $vars = {};
+       $vars->{dest} = $types{$dest_type};
+       $vars->{source} = $types{$source_type};
+       diag "Assigning $source_type to $dest_type";
+       $vars->{dest} = $vars->{source};
+       is ($vars->{dest}, $vars->{source});
+    }
+}
End of Patch.

Reply via email to