[perl #44647] [PATCH] Add a test for overload::constant 'integer' across use's.
Shlomi Fish [Wed, 15 Aug 2007 04:19:53 +0000 (21:19 -0700)]
Message-Id: <rt-3.6.HEAD-10743-1187176792-1816.44647-75-0@perl.org>

p4raw-id: //depot/perl@31732

MANIFEST
t/op/overload_integer.t [new file with mode: 0644]

index b4d5ea0..38edcca 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -3740,6 +3740,7 @@ t/op/oct.t                        See if oct and hex work
 t/op/ord.t                     See if ord works
 t/op/or.t                      See if || works in weird situations
 t/op/override.t                        See if operator overriding works
+t/op/overload_integer.t                        See if overload::constant for integer works after "use".   
 t/op/pack.t                    See if pack and unpack work
 t/op/pat.t                     See if esoteric patterns work
 t/op/pos.t                     See if pos works
diff --git a/t/op/overload_integer.t b/t/op/overload_integer.t
new file mode 100644 (file)
index 0000000..073ac2a
--- /dev/null
@@ -0,0 +1,55 @@
+#!./perl
+
+use strict;
+use warnings;
+
+print "1..2\n";
+
+package Foo;
+
+use overload; 
+
+sub import
+{
+    overload::constant 'integer' => sub { return shift; };
+}
+
+package main;
+
+BEGIN { $INC{'Foo.pm'} = "/lib/Foo.pm" }
+
+use Foo;
+
+my $result = eval "5+6";
+
+my $error = $@;
+
+my $label = "No exception was thrown with an overload::constant 'integer' inside an eval.";
+# TEST
+if ($error eq "")
+{
+    print "ok 1 - $label\n"
+}
+else
+{
+    print "not ok 1 - $label\n";
+    print "# Error is $error\n";
+}
+
+$label = "Correct solution";
+
+if (!defined($result))
+{
+    $result = "";
+}
+# TEST
+if ($result eq 11)
+{
+    print "ok 2 - $label\n";
+}
+else
+{
+    print "not ok 2 - $label\n";
+    print "# Result is $result\n";
+}
+