This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
overload.t: Test experimental bitops
authorFather Chrysostomos <sprout@cpan.org>
Mon, 5 Jan 2015 01:13:12 +0000 (17:13 -0800)
committerFather Chrysostomos <sprout@cpan.org>
Sun, 1 Feb 2015 06:03:52 +0000 (22:03 -0800)
lib/overload.t

index 524d99f..9e9798c 100644 (file)
@@ -48,7 +48,7 @@ package main;
 
 $| = 1;
 BEGIN { require './test.pl' }
-plan tests => 5199;
+plan tests => 5200;
 
 use Scalar::Util qw(tainted);
 
@@ -2754,6 +2754,37 @@ is join(",", 1..3, scalar((bless([], 'xstack')) x 3, 1), 4..6),
   "1,2,3,1,4,5,6",
   '(...)x... in void cx with x overloaded [perl #121827]';
 
+package bitops {
+    our @o;
+    use overload do {
+       my %o;
+       for my $o (qw(& | ^ ~ &. |. ^. ~. &= |= ^= &.= |.= ^.=)) {
+           $o{$o} = sub { push @o, $o; $_[0] }
+       }
+       %o, '=' => sub { bless [] };
+    }
+}
+{
+    use experimental 'bitwise';
+    my $o = bless [], bitops::;
+    $_ = $o & 0;
+    $_ = $o | 0;
+    $_ = $o ^ 0;
+    $_ = ~$o;
+    $_ = $o &. 0;
+    $_ = $o |. 0;
+    $_ = $o ^. 0;
+    $_ = ~.$o;
+    $o &= 0;
+    $o |= 0;
+    $o ^= 0;
+    $o &.= 0;
+    $o |.= 0;
+    $o ^.= 0;
+    is "@bitops::o", '& | ^ ~ &. |. ^. ~. &= |= ^= &.= |.= ^.=',
+       'experimental "bitwise" ops'
+}
+
 { # undefining the overload stash -- KEEP THIS TEST LAST
     package ant;
     use overload '+' => 'onion';