This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Test split on empty pattern with varying field counts
authorRichard Leach <richardleach@users.noreply.github.com>
Fri, 2 Oct 2020 16:31:33 +0000 (17:31 +0100)
committerHugo van der Sanden <hv@crypt.org>
Sat, 3 Oct 2020 23:07:48 +0000 (00:07 +0100)
This builds on commit 04b729c025 to add additional coverage of the null
pattern split. Specifically:
* Check that trailing element behaviour (LIMIT > length) is correct - this
is not currently tested
* Check that scalar & non-scalar context produce similar counts across
the possible the LIMIT-to-string-length relationships
* Check that negative and zero LIMITs produce the expected output

t/op/split.t

index 64b11d4..ce6b0be 100644 (file)
@@ -7,7 +7,7 @@ BEGIN {
     require './charset_tools.pl';
 }
 
-plan tests => 178;
+plan tests => 187;
 
 $FS = ':';
 
@@ -68,11 +68,19 @@ $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', -1));
+is($_, '1:2:3:', "Split with empty pattern and LIMIT == -1");
+$_ = join(':', split(//, '123', 0));
+is($_, '1:2:3', "Split with empty pattern and LIMIT == 0");
 $_ = 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");
+$_ = join(':', split(//, '123', 6));
+is($_, '1:2:3:', "Split with empty pattern and LIMIT > length");
+for (-1..5) {
+    @ary = split(//, '123', $_);
+    $cnt = split(//, '123', $_);
+    is($cnt, scalar(@ary), "Check empty pattern element count with LIMIT == $_");
+}
 
 # Does the 999 suppress null field chopping?
 $_ = join(':', split(/:/,'1:2:3:4:5:6:::', 999));