This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add tests for documented behaviour of Tie::Hash::NamedCapture::TIEHASH.
authorNicholas Clark <nick@ccl4.org>
Tue, 8 Mar 2011 15:28:37 +0000 (15:28 +0000)
committerNicholas Clark <nick@ccl4.org>
Tue, 8 Mar 2011 15:47:22 +0000 (15:47 +0000)
MANIFEST
ext/Tie-Hash-NamedCapture/t/tiehash.t [new file with mode: 0644]

index a19bc36..06e0206 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -3591,6 +3591,7 @@ ext/Sys-Hostname/Hostname.xs      Sys::Hostname extension external subroutines
 ext/Sys-Hostname/t/Hostname.t  See if Sys::Hostname works
 ext/Tie-Hash-NamedCapture/NamedCapture.pm      Implements %- and %+ behaviour
 ext/Tie-Hash-NamedCapture/NamedCapture.xs      Implements %- and %+ behaviour
 ext/Sys-Hostname/t/Hostname.t  See if Sys::Hostname works
 ext/Tie-Hash-NamedCapture/NamedCapture.pm      Implements %- and %+ behaviour
 ext/Tie-Hash-NamedCapture/NamedCapture.xs      Implements %- and %+ behaviour
+ext/Tie-Hash-NamedCapture/t/tiehash.t          Tests TIEHASH
 ext/Tie-Memoize/lib/Tie/Memoize.pm     Base class for memoized tied hashes
 ext/Tie-Memoize/t/Tie-Memoize.t                Test for Tie::Memoize
 ext/VMS-DCLsym/0README.txt     ReadMe file for VMS::DCLsym
 ext/Tie-Memoize/lib/Tie/Memoize.pm     Base class for memoized tied hashes
 ext/Tie-Memoize/t/Tie-Memoize.t                Test for Tie::Memoize
 ext/VMS-DCLsym/0README.txt     ReadMe file for VMS::DCLsym
diff --git a/ext/Tie-Hash-NamedCapture/t/tiehash.t b/ext/Tie-Hash-NamedCapture/t/tiehash.t
new file mode 100644 (file)
index 0000000..3ebc81a
--- /dev/null
@@ -0,0 +1,34 @@
+#!./perl -w
+use strict;
+
+use Test::More;
+
+my %hashes = ('+' => \%+, '-' => \%-);
+
+foreach (['plus1'],
+        ['minus1', all => 1],
+        ['plus2', all => 0],
+        ['plus3', zlonk => 1],
+        ['minus2', thwapp => 0, all => 1],
+       ) {
+    my $name = shift @$_;
+    my $hash = $hashes{$name} = {};
+    isa_ok(tie(%$hash, 'Tie::Hash::NamedCapture', @$_),
+          'Tie::Hash::NamedCapture', "%$name");
+}
+
+is("abcdef" =~ /(?<foo>[ab])*(?<bar>c)(?<foo>d)(?<bar>[ef]*)/, 1,
+   "We matched");
+
+foreach my $name (qw(+ plus1 plus2 plus3)) {
+    my $hash = $hashes{$name};
+    is_deeply($hash, { foo => 'b', bar => 'c' }, "%$name is as expected");
+}
+
+foreach my $name (qw(- minus1 minus2)) {
+    my $hash = $hashes{$name};
+    is_deeply($hash, { foo => [qw(b d)], bar => [qw(c ef)] },
+             "%$name is as expected");
+}
+
+done_testing();