This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Test split on empty pattern with field count
authorHugo van der Sanden <hv@crypt.org>
Fri, 2 Oct 2020 02:24:46 +0000 (03:24 +0100)
committerJames E Keenan <jkeenan@cpan.org>
Fri, 2 Oct 2020 12:40:46 +0000 (08:40 -0400)
Prompted by GH #18188

t/op/split.t
t/op/split_unicode.t

index 14f9158..7377616 100644 (file)
@@ -7,7 +7,7 @@ BEGIN {
     set_up_inc('../lib');
 }
 
-plan tests => 176;
+plan tests => 178;
 
 $FS = ':';
 
@@ -67,6 +67,13 @@ is($_, '1:2:3:4 5 6', "Split into a specified number of fields, defined by a sca
 $cnt = split(' ','1 2 3 4 5 6', $x);
 is($cnt, scalar(@ary), "Check element count from previous test");
 
+# Can we do it with the empty pattern?
+$_ = join(':', split(//, '123', 2));
+is($_, '1:23', "Split into specified number of fields with empty pattern");
+@ary = split(//, '123', 2);
+$cnt = split(//, '123', 2);
+is($cnt, scalar(@ary), "Check element count from previous test");
+
 # Does the 999 suppress null field chopping?
 $_ = join(':', split(/:/,'1:2:3:4:5:6:::', 999));
 is($_ , '1:2:3:4:5:6:::');
index 1d02cb2..cbaf7fb 100644 (file)
@@ -6,7 +6,7 @@ BEGIN {
 }
 
 skip_all_if_miniperl("no dynamic loading on miniperl, no File::Spec (used by charnames)");
-plan(tests => 145);
+plan(tests => 147);
 
 {
     # check the special casing of split /\s/ and unicode
@@ -77,3 +77,14 @@ plan(tests => 145);
     }
 
 }
+
+{
+    # Check empty pattern with specified field count on Unicode string
+    my $string = "\x{100}\x{101}\x{102}";
+    $_ = join(':', split(//, $string, 2));
+    is($_, "\x{100}:\x{101}\x{102}",
+            "Split into specified number of fields with empty pattern");
+    @ary = split(//, $string, 2);
+    $cnt = split(//, $string, 2);
+    is($cnt, scalar(@ary), "Check element count from previous test");
+}