Skip to content

Commit

Permalink
Extract a function to avoid duplicate code.
Browse files Browse the repository at this point in the history
  • Loading branch information
Shlomi Fish authored and briandfoy committed Jul 23, 2019
1 parent 1ba247e commit 6050ff6
Showing 1 changed file with 34 additions and 17 deletions.
51 changes: 34 additions & 17 deletions t/sort.t
Original file line number Diff line number Diff line change
Expand Up @@ -10,24 +10,44 @@ sub _lines2re
return join( qq#\r?\n#, @_ ) . qq#\r?\n?#;
}

sub test_sort
{
my $letters_re = _lines2re(qw/ a b c d e f /);
local $Test::Builder::Level = $Test::Builder::Level + 1;
my ($args) = @_;

# TEST
like( scalar(`$^X -Ilib bin/sort t/data/sort/letters1.txt`),
qr#\A$letters_re\z#ms, "letters sort" );
my $re = _lines2re( @{ $args->{lines} } );
return like(
scalar(`$^X -Ilib bin/sort @{$args->{flags}} @{$args->{files}}`),
qr#\A$re\z#ms, $args->{blurb} );
}

{
my $ints_re = _lines2re( 1 .. 100 );
# TEST
test_sort(
{
blurb => "letters sort",
files => [qw( t/data/sort/letters1.txt )],
flags => [],
lines => [qw/ a b c d e f /],
}
);

# TEST
like( scalar(`$^X -Ilib bin/sort -n t/data/sort/ints1.txt`),
qr#\A$ints_re\z#ms, "integers sort" );
}
# TEST
test_sort(
{
blurb => "integers sort",
files => [qw( t/data/sort/ints1.txt )],
flags => [qw/ -n /],
lines => [ 1 .. 100 ],
}
);

{
my $lines_re = _lines2re( split/\n/,<<'EOF' );
# TEST
test_sort(
{
blurb => "multiple -k sort",
files => [qw( t/data/sort/three-words.txt )],
flags => [qw/ -k 2 -k 1 /],
lines => [ split /\n/, <<'EOF'],
column by pencil
row by row
a little love
Expand All @@ -37,11 +57,8 @@ mooing persistent cat
the wonderful unicorn
mooing yodelling dog
EOF

# TEST
like( scalar(`$^X -Ilib bin/sort -k 2 -k 1 t/data/sort/three-words.txt`),
qr#\A$lines_re\z#ms, "-k 2,1 sort" );
}
}
);

__END__
Expand Down

0 comments on commit 6050ff6

Please sign in to comment.